【问题标题】:Check if an event already exists检查一个事件是否已经存在
【发布时间】:2011-04-17 13:21:49
【问题描述】:

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

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

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

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

谢谢,

巫毒

【问题讨论】:

  • 您想测试是否附加了一个事件处理程序,这样您就不会附加多个事件?即 LoadingRow 事件可能每行触发多次?
  • 是的,在_gridObj_LoadingRow 中,MouseLeftButtonUp 事件被多次附加。我想检查MouseLeftButtonUp 事件是否已经附加,所以我没有为它注册另一个事件。在我这里,它会多次触发MouseLeftButtonUp
  • 好的,我已经添加了一个应该满足您要求的答案。

标签: c# silverlight datagrid


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2019-08-22
    相关资源
    最近更新 更多