TextBox中的永久前缀

Luk*_*ley 4 c# winforms

我想在文本框中输入一个永久前缀.在我的情况下,我想要以下前缀:

DOMAIN\

这样用户只需在域前缀后输入用户名即可.这不是我必须做的事情,也不是追求,但我的问题更多是出于好奇.

我试图想出一些逻辑来做到这一点TextChangedEvent,但这意味着我需要知道哪些字符已被删除,然后预先附加DOMAIN\到他们的输入 - 我无法解决这个问题所以我无法发布我所尝试的内容.

public void TextBox1_TextChanged(object sender, EventArgs e)
{
  if(!TextBox1.Text.Contains(@"DOMAIN\")
  {
    //Handle putting Domain in here along with the text that would be determined as the username
  }
}
Run Code Online (Sandbox Code Playgroud)

我在互联网上看了一下,找不到任何东西,如何在winforms文本框中添加带有不可变文本的文本?我试图做类似的事情,但答案并没有真正帮助.

我如何能保持前缀任何想法DOMAIN\TextBox

Han*_*ant 10

这里表示使用KISS原理.当用户使用Ctrl + V或上下文菜单的剪切和粘贴命令时,尝试捕捉按键操作不会做任何事情.当发生任何捏造前缀的事情时,只需恢复文本:

    private const string textPrefix = @"DOMAIN\";

    private void textBox1_TextChanged(object sender, EventArgs e) {
        if (!textBox1.Text.StartsWith(textPrefix)) {
            textBox1.Text = textPrefix;
            textBox1.SelectionStart = textBox1.Text.Length;
        }
    }
Run Code Online (Sandbox Code Playgroud)

并帮助用户避免意外编辑前缀:

    private void textBox1_Enter(object sender, EventArgs e) {
        textBox1.SelectionStart = textBox1.Text.Length;
    }
Run Code Online (Sandbox Code Playgroud)