检测哪种控件处于活动状态

时间:2013-07-02 07:18:31

标签: c# winforms controls

用于检测以窗体形式激活哪些控件

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中我应该输入控件名称,但是如何处理所有类型文本框的控件呢?

3 个答案:

答案 0 :(得分:3)

要确定活动控件是Button还是TextBox,您可以使用is运算符。 is运算符检查对象是否与给定类型兼容。如果ControlButton兼容且表达式为true,则控件 为按钮。

if (ActiveControl is Button)
{

}
else if (ActiveControl is TextBox)
{

}

答案 1 :(得分:1)

使用.GetType(),例如this.ActiveControl.GetType() == typeof(Button)

答案 2 :(得分: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 objekt测试时。