如何禁用文本框上的选择

本文关键字:选择 何禁用 文本 | 更新日期: 2023-09-27 18:08:40

我想禁用在文本框中选择文本并单击文本中间,但用户必须能够进入该文本框并在先前文本的末尾写入,因此我不能使其为ReadOnlyEnable = false

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

input.Select(input.Text.Length, 0);

它有助于将光标放置在文本中间,但用户仍然可以从末尾进行选择。

我也在MouseDown事件上做了一个MessageBox(),但在这种情况下,用户不能点击textBox并写任何东西。

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

我该怎么做?

如何禁用文本框上的选择

对于Click事件

编辑:同样对DoubleClickMouseLeave做同样的处理,以覆盖所有情况。你可以有一个公共的事件处理程序。

    private void textBox1_Click(object sender, EventArgs e)
    {
        ((TextBox) sender).SelectionLength = 0;
    }

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

这种方法不仅可以说是更用户友好的—可编辑框是完全可编辑的,而不仅仅是"可追加的",当用户按退格键&mdash时,这会让用户感到困惑,而且还需要更少的与框架的冲突,使框做你需要的。

您离MouseDown事件处理程序已经很近了,但可能最好捕获MouseUp,因为这是当他们完成选择时将触发的事件。

或者,您可以捕获SelectionChanged事件。

输入你的:

input.Select (input.Text。长度,0),