none
请问如何清除事件链中事件? RRS feed

  • 问题

  • 如:
    btnXXX.Click  += new EventHandler(a1);
    btnXXX.Click  += new EventHandler(a2);
    ......
    btnXXX.Click  += new EventHandler(aN);

    可有办法让btnXXX.Click所有事件都清除掉? 事件链内部有add{...} remove{...},但这些没办法调用?

    2010年2月2日 8:53

答案

全部回复

  • 你好!
         使用-=运算符就可以了:
         btnXXX.Click  -= new EventHandler(a1);
         希望对你有帮助!
    周雪峰
    2010年2月2日 8:55
    版主
  • 因为我不确定它到底加入多少事件处理方法, a1.... aN。
    我希望能一次清除该事件所有处理方法, 或者能枚举出所有已加入的处理方法,然后再一个个删除也行。


    我想用反射大概可以解决此类问题,但我反复试了几次也没成功?
    2010年2月3日 2:52
  • 你好!
         可以使用GetInvocationList方法获取委托链上的所有委托,该方法返回一个Delegate[]
    周雪峰
    2010年2月3日 3:10
    版主