怎么清除事件的响应函数??

piaoling 2007-12-06 01:31:21
在C#里面我给一个事件指定了几个响应函数,
怎么清除这些事件响应函数??
在没有获得这些响应函数的引用的时候。
...全文
178 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
西安风影 2007-12-06
  • 打赏
  • 举报
回复
this.Click -= new EventHandler(Form1_Click);
lovefootball 2007-12-06
  • 打赏
  • 举报
回复
利用反射修改它的委托"链表"

看下面的例子
先给Button5加几个
this.button5.Click += new EventHandler(button5_Click);
this.button5.Click += new EventHandler(button5_Click);
this.button5.Click += new EventHandler(button5_Click);
this.button5.Click += new EventHandler(button5_Click);
this.button5.Click += new EventHandler(button5_Click);

删除几个

PropertyInfo pi = (typeof(System.Windows.Forms.Button)).GetProperty("Events",
BindingFlags.Instance | BindingFlags.NonPublic);
EventHandlerList ehl = (EventHandlerList)pi.GetValue(button5, null);
FieldInfo fi = (typeof(Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Delegate d = ehl[fi.GetValue(null)];
if (d != null)
{
System.Delegate[] dels = d.GetInvocationList();
for (int i = 0; i < dels.Length; i++)
{
if (i < 3)
{
this.button5.Click -= (EventHandler)dels[i];
}
}
}
  • 打赏
  • 举报
回复
控件.事件 -= new EventHandler(委托方法);
EricGuzuqiang 2007-12-06
  • 打赏
  • 举报
回复
Attributes.Remove
chxzll 2007-12-06
  • 打赏
  • 举报
回复
this.tabTool.SelectedIndexChanged -= new System.EventHandler(this.tabTool_SelectedIndexChanged);
boblaw 2007-12-06
  • 打赏
  • 举报
回复

this.Click += new EventHandler(Form1_Click);
this.Click -= new EventHandler(Form1_Click);

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧