【发布时间】:2015-04-20 03:33:15
【问题描述】:
我想在单击(或选项卡到)控件时选择MaskedTextBox 的所有内容,以便它们可以轻松替换旧内容。我尝试在Enter 事件中调用SelectAll(),但这根本不起作用。
我切换到使用GotFocus 事件,它在切换控件时效果很好,但是当我用鼠标单击它时就不起作用了。我只想在第一次输入/关注控件时选择所有内容(后续单击可能用于定位光标以编辑现有文本)。
我添加了一个按钮并尝试在按钮单击事件中调用SelectAll(),但这也没有做任何事情。这是怎么回事?这是一个错误吗?
我该如何解决这个问题?
复制步骤
- 在 Visual 的 .NET 4.0 中创建一个新的 Windows 窗体应用程序 2010 年工作室。
- 在默认表单中添加
TextBox、MaskedTextBox和Button - 将 MaskedTextBox 上的
Mask属性更改为“_____”。 -
添加一些事件处理程序:
private void maskedTextBox1_GotFocus(object sender, EventArgs e) { Debug.WriteLine("GotFocus"); maskedTextBox1.SelectAll(); } private void button1_Click(object sender, EventArgs e) { Debug.WriteLine("Click"); maskedTextBox1.SelectAll(); } 运行程序,在 MaskedTextBox 中输入一些数据,通过控件返回到它。它选择 MaskedTextBox 的内容。
- 选择另一个文本框。尝试单击 MaskedTextBox。输出显示调用了
GotFocus事件,但未选择文本。 - 尝试单击表单中的按钮。文本没有被选中。
在 Windows 窗体应用程序项目中使用 .NET 4.0 在 Visual Studio 2010 中测试
为什么这不是 TextBox.SelectAll() does not work with TAB 的重复项
如果您注意到,标题会显示“SelectAll 不适用于 TAB”。在我的例子中,它确实与Tab一起工作,它不与鼠标一起工作——完全相反的情况。该问题的答案是使用GotFocus 事件。我已经在使用GotFocus 事件,但它不起作用。这个答案没有回答这个问题。这显然不是重复的。如果我错了,请在 cmets 中解释。
【问题讨论】:
-
看看here,它可能会有所帮助
标签: c# .net winforms maskedtextbox