如何捕获表单中的所有事件

时间:2012-07-13 02:29:14

标签: c#

对于每个事件,我必须编写一个事件处理程序:

this.MouseMove += new MouseEventHandler(Home_MouseMove);
this.KeyPress += new KeyPressEventHandler(Home_KeyPress);

如果我要捕获每个按钮处理程序,那么我将不得不为每个按钮编写一个事件处理程序。

有什么好方法吗?

1 个答案:

答案 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。见

如果是这种情况,您可以使用递归来迭代每个集合。