可能重复: 如何删除按钮的所有点击事件处理程序?
我想从一个按钮中删除所有的点击事件处理程序。我在Stack Overflow问题如何从控件中删除所有事件处理程序中找到了这个方法。
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]);
}
但是这行代码始终返回 null:
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
这个方法是在2006年编写的。
是否有最新版本的此方法?