如何从事件中删除所有事件处理程序

如何从事件中删除所有事件处理程序,第1张

如何从事件删除所有事件处理程序

我在MSDN论坛上找到了解决方案。以下示例代码将从中删除所有

Click
事件
button1

public partial class Form1 : Form{        public Form1()        { InitializeComponent(); button1.Click += button1_Click; button1.Click += button1_Click2; button2.Click += button2_Click;        }        private void button1_Click(object sender, EventArgs e)        { MessageBox.Show("Hello");        }        private void button1_Click2(object sender, EventArgs e)        { MessageBox.Show("World");        }        private void button2_Click(object sender, EventArgs e)        { RemoveClickEvent(button1);        }        private void RemoveClickEvent(Button b)        { FieldInfo f1 = typeof(Control).GetField("EventClick",      BindingFlags.Static | BindingFlags.NonPublic); object obj = f1.GetValue(b); PropertyInfo pi = b.GetType().GetProperty("Events",       BindingFlags.NonPublic | BindingFlags.Instance); EventHandlerList list = (EventHandlerList)pi.GetValue(b, null); list.RemoveHandler(obj, list[obj]);        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5487526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存