【问题标题】:Program selects textbox text on click, how to prevent subsequent clicks from selecting text again [duplicate]程序单击时选择文本框文本,如何防止后续单击再次选择文本[重复]
【发布时间】:2019-12-12 13:59:29
【问题描述】:

我的 Windows 窗体中有多个文本框,当用户单击它们时,我希望它们的文本被选中。我试图找到一种方法,当用户在框中连续单击时,只在框中选择文本的第一次单击。我希望随后在同一个框中单击以放置文本光标框,而不是无休止地选择文本,这就是现在正在发生的事情。

我尝试在 if 语句中调用focused.Select(),该语句仅在未选择任何文本时运行,如下所示。问题在于,在用户单击所选文本短暂“取消选择”之后,Highlight_OnClick 运行并再次选择文本。

    private void HighlightWhenFocused(object sender, EventArgs e)
    {

        if (sender is TextBox)
        {
            TextBox focused = sender as TextBox;
            focused.Select(0, focused.Text.Length);
            //if (focused.SelectionLength == 0 { focused.Select(0, focused.Text.Length); }    
            // does not work either
        }
    }

我上面的代码总是选择文本,但问题是即使用户点击了已经选择的文本框,后续点击也只会重新选择文本。

【问题讨论】:

  • 处理Enter事件,然后在事件处理程序BeginInvoke(new Action(() => ((TextBox)sender).SelectAll()));
  • 在链接的帖子中,看看this answer

标签: c# .net winforms


【解决方案1】:

您听起来好像已将此事件处理程序绑定到文本框上的 Click 事件。您应该改用Enter 事件。这将在控件获得焦点时触发一次,但后续点击不会重新触发:

【讨论】:

  • 此事件实际上也绑定到 Enter 事件,这允许我使用 Tab 选择框,单击文本框不会聚焦它,即使我改变了我仍然会有同样的问题。感谢您的建议!
猜你喜欢
  • 2010-10-27
  • 2015-08-07
  • 2015-04-03
  • 2017-06-25
  • 2014-02-09
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
相关资源
最近更新 更多