对于每个事件,我必须编写一个事件处理程序:
this.MouseMove += new MouseEventHandler(Home_MouseMove);
this.KeyPress += new KeyPressEventHandler(Home_KeyPress);
如果我要捕获每个按钮处理程序,那么我将不得不为每个按钮编写一个事件处理程序。
有什么好方法吗?
答案 0 :(得分:1)
您可以在Button
事件中为Form_Load
类型的每个控件附加一个事件。更好的是,在调用InitializeComponent
后的构造函数本身。
为什么'之后'?因为如果您以前这样做,将无法控制要附加到的表单。
foreach(Control c in this.Controls)
{
if(c is Button)
{
// Just an example, mold it to fit your app.
((Button) c).Click += new MouseClickHandler();
}
}
请注意,如果您有一个带有按钮的Panel
控件,则不会将事件附加到该控件,因为该按钮不是.Controls
的Form(“this”)集合的一部分;而是this.Panel1.Controls
。见
如果是这种情况,您可以使用递归来迭代每个集合。