用于检测以窗体形式激活哪些控件
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);
}
答案 0 :(得分:3)
要确定活动控件是Button还是TextBox,您可以使用is
运算符。 is运算符检查对象是否与给定类型兼容。如果Control
与Button
兼容且表达式为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测试时。