【问题标题】:Removing attached event handler when using lambda expression [duplicate]使用 lambda 表达式时删除附加的事件处理程序 [重复]
【发布时间】:2020-01-12 22:14:19
【问题描述】:

当我附加简单的事件处理程序时,我可以这样做:

expandable_list_item_inspection_interface_btnCamera.Click -= Expandable_list_item_inspection_interface_btnCamera_Click;

我想删除一个已经附加的事件处理程序,以确保在 ExpandableListView 的适配器中以编程方式附加事件时不会多次调用 click 事件。但如果我附加这样的事件:

expandable_list_item_inspection_interface_btnCamera.Click -= (sender, e) => btnCamera_Click(sender, e, expandable_list_item_inspection_interface_btnImage1);
expandable_list_item_inspection_interface_btnCamera.Click += (sender, e) => btnCamera_Click(sender, e, expandable_list_item_inspection_interface_btnImage1);

尽管我首先删除了事件处理程序,然后添加了另一个,但该事件仍会被多次调用。我该如何防止这种情况?

【问题讨论】:

    标签: c# android .net xamarin


    【解决方案1】:

    你需要记住你这样使用的委托实例。

    var handler = (sender, e) => btnCamera_Click(sender, e, expandable_list_item_inspection_interface_btnImage1);
    

    然后像这样使用它附加和删除

    expandable_list_item_inspection_interface_btnCamera.Click -= handler 
    expandable_list_item_inspection_interface_btnCamera.Click += handler 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多