2010-09-27 81 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