检查事件是否已存在。

10

我有一个数据网格加载行事件

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

在处理程序中,我正在创建另一个事件。在下面的代码中,如何知道该行是否已经存在 MouseLeftBtn 事件?

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

你想测试一个事件处理程序是否已经附加,以便不会附加多个事件吗?例如,LoadingRow事件可能会在每一行中触发多次。 - aqwert
是的,在“_gridObj_LoadingRow”中,多次附加了“MouseLeftButtonUp”事件。我想检查是否已经连接了“MouseLeftButtonUp”事件,以便不再为其注册另一个事件。在我这里,它会多次触发“MouseLeftButtonUp”事件。 - VoodooChild
好的,我已经添加了一个答案,应该符合您的要求。 - aqwert
1个回答

15

根据您的评论,您不想在这种情况下附加多个处理程序,因此我会先取消订阅然后重新订阅。如果没有存在的话,它不会出错取消订阅,并确保只有一个处理程序。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接