2010-09-27 79 views
9

我有一個數據網格加載行事件檢查事件已經存在

_gridObj.LoadingRow += new EventHandler<DataGridRowEventArgs>(_gridObj_LoadingRow); 

,並在處理程序中,我創建另一個事件。在下面的代碼中,我怎麼知道該行的MouseLeftBtn事件是否已經存在?

void _gridObj_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp); 
} 

感謝,

巫毒

+0

您是否想測試一個事件處理程序是否已附加,以便您不附加多個事件?即LoadingRow事件可能每行被觸發多次? – aqwert 2010-09-27 01:11:17

+0

是的,在_gridObj_LoadingRow中,MouseLeftButtonUp事件連接多次。我想檢查'MouseLeftButtonUp'事件是否已經連接,所以我沒有爲它註冊其他事件。它在這裏多次觸發'MouseLeftButtonUp'。 – VoodooChild 2010-09-27 03:26:23

+0

好吧,我已經添加了一個應該滿足您的要求的答案。 – aqwert 2010-09-27 04:39:15

回答

13

基於您的評論,你不想在這種情況下,然後我重新訂閱退訂附上muliple處理程序。如果不存在並且確保只有一個處理程序,它不會給出錯誤退訂。

void _gridObj_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.MouseLeftButtonUp -= new MouseButtonEventHandler(Row_MouseLeftButtonUp); 
    e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp); 
} 
+0

+1,謝謝你的方式似乎已經奏效。 – VoodooChild 2010-09-27 05:10:19