0

使用 C# WinForms,我用一些额外的功能扩展了 TextBox。除其他外,当文本框获得焦点时,我会突出显示文本。当用户选项卡或单击控件时,这可以正常工作。但是,当整个窗口获得焦点时(例如从另一个应用程序到我的 alt+tab),也会调用 OnFocus,这是不可取的。

有什么想法可以检查 onfocus() 是否因为整个表单获得焦点而被调用?

谢谢,

麦克风

我当前的 OnFocus() 看起来像:

    protected void mTextBox_OnFocus(object sender, EventArgs e)
    {
        if (MouseButtons == MouseButtons.None)
        {
            mTextBox.SelectAll();
            mHasFocus = true;
        }
    }
4

3 回答 3

0

在 GotFocus 事件处理程序中,尝试检查 TextBoxFocused属性是否为真。看:

Control.Focused 属性 - MSDN

于 2013-03-04T02:46:38.880 回答
0

尝试使用Control.CaptureContainsFocus属性来确定文本框是否已捕获鼠标或包含焦点。

于 2013-03-04T12:22:11.427 回答
0

我建议你这样做:

  public class Text : TextBox
  {
    protected override void OnEnter(EventArgs e)
    {
      base.OnEnter(e);
      //To stuff there
    }
  }

我已经尝试过几次来控制焦点,但它非常“滑”。此外,很难确定焦点来自哪里 - 或者正在去哪里

于 2013-03-04T12:24:00.753 回答