gpt4 book ai didi

c# - GotFocus 上的 MaskedTextBox.SelectAll 不适用于鼠标

转载 作者:太空狗 更新时间:2023-10-29 21:12:38 24 4
gpt4 key购买 nike

我想在单击(或制表符)控件时选择 MaskedTextBox 的所有内容,以便它们可以轻松替换旧内容。我尝试在 Enter 事件中调用 SelectAll(),但这根本不起作用。

我切换到使用 GotFocus 事件,它在通过控件切换时效果很好,但在我用鼠标单击它时不起作用。我只想在第一次进入/聚焦控件时选择所有内容(随后的点击可能用于定位光标以编辑现有文本)。

我添加了一个按钮,并尝试在按钮单击事件中调用 SelectAll(),但这也没有做任何事情。这是怎么回事?这是错误吗?

我该如何解决这个问题?


重现步骤

  1. 在 Visual 的 .NET 4.0 中创建一个新的 Windows 窗体应用程序工作室 2010。
  2. 为默认表单添加一个TextBoxMaskedTextBoxButton
  3. 将 MaskedTextBox 的 Mask 属性更改为“_____”。
  4. 添加一些事件处理程序:

    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();
    }
  5. 运行程序,将一些数据输入到 MaskedTextBox 中,然后通过控件切换回它。它选择 MaskedTextBox 的内容。

  6. 选择另一个文本框。尝试单击 MaskedTextBox。输出显示调用了 GotFocus 事件,但未选择文本。
  7. 尝试点击表单中的按钮。文本未被选中。

在 Windows 窗体应用程序项目中使用 .NET 4.0 在 Visual Studio 2010 中测试


为什么这不是 TextBox.SelectAll() does not work with TAB 的副本

如果您注意到,标题是“SelectAll doesn't work with TAB”。在我的例子中,它确实Tab 一起工作,它与鼠标一起工作——完全相反的情况。该问题的答案是使用 GotFocus 事件。我已经在使用 GotFocus 事件,但它不起作用。该答案没有回答这个问题。这显然不是重复的。如果我错了,请在评论中解释。

最佳答案

您的 SelectAll() 正在被屏蔽文本框选择的默认功能覆盖。我会使用 Enter 事件,它允许选项卡式输入或鼠标单击输入到屏蔽文本框。您很可能需要使用 BeginInvoke 方法。试试下面的代码。当我尝试时它对我有用......

private void maskedTextBox1_Enter(object sender, EventArgs e)
{
BeginInvoke((Action) delegate { SetMaskedTextBoxSelectAll((MaskedTextBox) sender); });
}

private void SetMaskedTextBoxSelectAll(MaskedTextBox txtbox)
{
txtbox.SelectAll();
}

关于c# - GotFocus 上的 MaskedTextBox.SelectAll 不适用于鼠标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com