我有一个按钮控件,我需要删除附加到其Click事件的所有事件处理程序.
怎么可能呢?
Button button = GetButton();
button.Click.RemoveAllEventHandlers();
Run Code Online (Sandbox Code Playgroud) 我想从按钮中删除所有单击事件处理程序.我在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]);
}
Run Code Online (Sandbox Code Playgroud)
但是这一行总是返回null:
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Run Code Online (Sandbox Code Playgroud)
这种方法写于2006年.
这个方法有最新版本吗?