【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
在C#2.0之前对象的事件订阅都是
public void Foo(object sender,EventAgrs e){}
obj.OnClick+=new EventHandle(Foo);
取消订阅就是 obj.OnClick-=new EventHandle(Foo);
那么如果是用匿名委托或者 lambda表达式订阅的事件该如何取消订阅?
如 obj.OnClick+=delegate(a,e){};
obj.OnClick+=(a,e)=>{};
像这样的该如何取消订阅?
使用匿名委托订阅事件,取消订阅比较麻烦。
可以这样实现,把委托或匿名方法保存在一个变量中。
订阅及取消时使用这个变量就可以了。
引用来自“晓寒”的答案
使用匿名委托订阅事件,取消订阅比较麻烦。
可以这样实现,把委托或匿名方法保存在一个变量中。
订阅及取消时使用这个变量就可以了。
回lz,可以进行这样的尝试,改用反射实现,用反射获得button的eventhandler,并对它进行反注册。
如果有实验结果了的话,别忘记分享下。
有难度,想了半天没想到应该怎么做;
不过在微软论坛里找到了一份答案..
原文: http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/9211ba35-001f-4319-a8e6-96e53995fbf9