0

C# WinForms を使用して、いくつかの機能を追加して TextBox を拡張しています。とりわけ、テキストボックスがフォーカスを得たときにテキストを強調表示しています。これは、ユーザーがコントロールをタブまたはクリックしたときに正常に機能します。ただし、OnFocus は、ウィンドウ全体がフォーカスを取得したときにも呼び出されます (別のアプリから別のアプリへの Alt + Tab キーなど)。これは望ましくありません。

フォーム全体がフォーカスを得たために onfocus() が呼び出されているかどうかを確認する方法はありますか?

ありがとう、

マイク

私の現在の OnFocus() は次のようになります。

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

3 に答える 3

0

私はあなたがこれをすることを提案します:

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

フォーカスをコントロールするために何度か試しましたが、それは非常に「滑りやすい」です。また、焦点がどこから来たのか、またはどこに向かっているのかを判断するのは非常に困難です

于 2013-03-04T12:24:00.753 に答える
0

Control.CaptureまたはContainsFocusプロパティを使用して、Textbox がマウスをキャプチャしたか、フォーカスが含まれているかを判断してください。

于 2013-03-04T12:22:11.427 に答える
0

GotFocus イベント ハンドラーで、TextBoxFocusedプロパティが true かどうかを確認してください。見る:

Control.Focused プロパティ - MSDN

于 2013-03-04T02:46:38.880 に答える