c# - 文本框中的永久前缀

标签 c# winforms

我正在尝试在文本框中输入永久前缀。就我而言,我想要以下前缀:

域\

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

我试图想出一些逻辑来在 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
  }
}

我已经在网上查过了,什么也找不到,How do I have text in a winforms textbox be prefixed with unchangable text?试图做类似的事情,但答案并没有真正帮助。

关于如何在 TextBox 中保留前缀 DOMAIN\ 有什么想法吗?

最佳答案

此处说明使用 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;
        }
    }

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

    private void textBox1_Enter(object sender, EventArgs e) {
        textBox1.SelectionStart = textBox1.Text.Length;
    }

关于c# - 文本框中的永久前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524422/

相关文章:

c# - 从 C# FtpWebRequest FTP 代码更改为 SFTP

.net - WinForms事件生命周期

c# - 如何选择、显示和保存图形区域?

c# - C# 中线程仍在运行

c# - Feed RDLC (Local) report 来自 List (Entity FrameWork) 的报告

c# - 带控件的基本 UserControl - 派生控件中的对齐不正确

c# - 在 ASP.NET Core 的 Controller 中注入(inject)接口(interface)的特定实现

c# - 为什么没有 Convert.toFloat() 方法?

c# - ASP.NET MVC 以分发包的形式部署

c# - 代码分析提示我没有处理对象。这里有什么问题?