C#多个控件这样一起订阅事件为什么不行?

来源:百度知道 编辑:UC知道 时间:2024/06/10 11:53:34
for (int i = 0; i < this.Controls.Count; i++)
{
this.Controls[i].KeyDown += new KeyEventHandler(Level3FormProperty_KeyDown);
}

难道要一个个订阅?
private void Level3FormProperty_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
this.Dispose();
}
}
---------在构造函数里写的订阅事件代码为都写成这样来还不行?焦点在按钮上成功了,在别的如CheckBoxTextBox上时还不行。。------------------------
foreach (Control control in this.Controls)
{
if(control is TextBox)
((TextBox)control).KeyDown += new KeyEventHandler(Level3FormProperty_KeyDown);
if (control is CheckBox)
((CheckBox)control).KeyDown += new KeyEventHandler(Level3FormProperty_KeyDown);
if (control is Button)

你是需要form上面的所有控件吗?
还是控件有种类的?

public Login()
{
InitializeComponent();
foreach (Control con in this.Controls) {
con.KeyDown += new KeyEventHandler(con_KeyDown);
}
}

void con_KeyDown(object sender, KeyEventArgs e)
{
this.Text = e.KeyCode.ToString();
}
我测试过了,是可以的
你是不是Level3FormProperty_KeyDown这个函数有问题!

我觉得你只要把事件绑定到form上面就可以了!不需要给每个控件绑定!