首页 / 问答 / C#/.NET/.NET Core应用程序编程开发中如何移除已经在事件中注册的所有事件句柄呢?

C#/.NET/.NET Core应用程序编程开发中如何移除已经在事件中注册的所有事件句柄呢?

.NET C# WINFORM 事件 .NET Core 2.89K 次浏览
0

在C#/.NET/.NET Core应用程序编程开发(特别是在Winform)中,委托、事件以及事件句柄是会经常使用到的开发技术,比如:在Winform的窗体应用程序开发中,我们拖放一个按钮(Button),然后再双击这个按钮,设计器便可以自动为这个按钮注册一个单击事件,代码如下:

c.Click += new EventHandler(mainFormButton_Click);

或者我们也可以简写成如下形式:

c.Click += mainFormButton_Click;

如果要移除这个事件句柄,则可以使用-=操作,如下:

c.Click -= mainFormButton_Click;

那么,如果在按钮上注册了多个事件句柄,应该如何快速地移除这些事件句柄呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    使用反射得到事件的EventHandlerList,然后调用RemoveHandler来移除事件上所有已经注册的事件句柄,如下:

    Rector的个人主页

    Rector

    2020-04-14 回答

    • 0

      如果要移除包含属性事件在内的事件句柄,那么请使用如下的方法:

      Rector的个人主页

      Rector

      2020-04-14 回答

      • 0

        调用事件的GetInvocationList()方法来循环移除事件句柄,实现方法如下:

        Rector的个人主页

        Rector

        2020-04-14 回答

        我来回答