2

Windowsフォームでどのコントロールがアクティブ化されているかを検出するため

this.ActiveControl = NameOfControl;

コントロールのタイプを検出するのはどうですか。たとえば、アクティブなコントロールはボタンまたはテキストボックスですか?

新しい編集:

アクティブ コントロールが textBox のタイプの場合、キーを押して何かをしたいのですが、それ以外の場合は何もしません

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (this.ActiveControl == xxxx)
            {
                //do SomeThing
            }
              return base.ProcessCmdKey(ref msg, keyData);
        }

xxx では、コントロールの名前を入力する必要がありますが、テキスト ボックスのタイプであるすべてのコントロールに対してどのようにすればよいですか?

4

3 に答える 3

3

アクティブなコントロールが Button か TextBox かを判断するには、is演算子を使用できます。is 演算子は、オブジェクトが特定の型と互換性があるかどうかをチェックします。がaとControl互換性がButtonあり、式が true を返す場合、ControlButton です。

if (ActiveControl is Button)
{

}
else if (ActiveControl is TextBox)
{

}
于 2013-07-02T07:22:21.947 に答える
1

フォーム上のすべてのコントロールを繰り返し処理し、GotFocus イベントのイベント ハンドラーを設定できます。このイベント ハンドラーでは、次の変数を設定します。

    Control ActiveControl = null;

    private void Form1_Load(object sender, EventArgs e)
    {
        foreach (Control c in this.Controls)
        {
           if(c is TextBox)
           {
            c.GotFocus += (s, o) =>
                {
                    this.ActiveControl = s as Control;
                };
           }
        }
    }

「is」演算子を使用して型の ActiveControl オブジェクト テストを使用する場合。

于 2013-07-02T07:25:48.053 に答える
1

たとえば.GetType()this.ActiveControl.GetType() == typeof(Button)

于 2013-07-02T07:23:35.873 に答える