如何禁用TextBox上的选择

Pie*_*adz 5 c# textbox selection winforms

我想禁用选择文本并单击TextBox中的文本中间,但用户必须能够输入此TextBox并在早期文本的末尾写入,因此我无法创建它ReadOnlyEnable = false.

我尝试处理MouseDown并执行以下操作:

input.Select(input.Text.Length, 0);
Run Code Online (Sandbox Code Playgroud)

它有助于将光标放在文本的中间,但用户仍然可以从最后进行选择.

我也创建了一个MessageBox()on MouseDown事件,但在这种情况下,用户无法单击textBox并写入任何内容.

最后一次尝试是focus()在一段时间后设置另一个控制并重新关注,但它根本不起作用.用户仍然可以进行选择.

我该怎么做?

Bal*_*a R 5

这个Click活动怎么样?

编辑:同样做DoubleClickMouseLeave覆盖所有情况.您可以拥有一个公共事件处理程序.

    private void textBox1_Click(object sender, EventArgs e)
    {
        ((TextBox) sender).SelectionLength = 0;
    }
Run Code Online (Sandbox Code Playgroud)


Doc*_*Max 2

如果它适合 UI/用户模型,另一种方法是使用两个文本框:一个是只读文本框,其中包含用户可以看到并执行操作的前一个文本(如果这是他需要做的事情),另一个是可编辑文本框新文本以及用于将新文本提交到只读文本框(和持久层)的按钮。

这种方法不仅可以说更加用户友好——可编辑框是完全可编辑的,而不仅仅是“可追加”,当用户按下退格键时,这会让人感到困惑——而且还需要更少的与框架的冲突,使这些框满足您的需要。