我正在嘗試爲我的表單上的每個控件添加一個事件處理程序。這個表單是一個簡單的信息框,它彈出,並點擊它上面的任何地方也會做同樣的事情(有點像Outlook的電子郵件通知器)。爲此,我寫了一個遞歸方法來爲每個控件添加一個MouseClick
處理程序,如如下:如何通過名稱向事件添加事件處理程序?
private void AddMouseClickHandler(Control control, MouseEventHandler handler)
{
control.MouseClick += handler;
foreach (Control subControl in control.Controls)
AddMouseClickHandler(subControl, handler);
}
但是,如果我想添加一個處理所有MouseDown
和MouseUp
事件,我不得不寫兩個方法。我確信有解決辦法,但我找不到它。我要像一個方法:
private void AddRecursiveHandler(Control control, Event event, EventHandler handler)
{
control.event += handler;
foreach (Control subControl in control.Controls)
AddRecursiveHandler(subControl, event, handler);
}
+1 Lambdas是一個整潔的解決方案。 – 2010-05-19 15:46:26
這很好用!太糟糕了,你不能通過事件,壽。蘭姆達斯非常整潔;我必須更經常地記住他們。 – dlras2 2010-05-19 16:08:40
多好的答案和代碼示例;謝謝,托馬斯! – BillW 2011-07-13 15:39:36