相关疑难解决方法(0)

如何删除"Button"的"Click"事件的所有事件处理程序?

我有一个按钮控件,我需要删除附加到其Click事件的所有事件处理程序.

怎么可能呢?

Button button = GetButton();
button.Click.RemoveAllEventHandlers();
Run Code Online (Sandbox Code Playgroud)

.net c# events event-handling

16
推荐指数
4
解决办法
3万
查看次数

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

可能重复: 如何删除Button的Click事件的所有事件处理程序?

我想从按钮中删除所有单击事件处理程序.我在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年.

这个方法有最新版本吗?

注意:我正在使用WPF.NET 4.0.

.net c# wpf event-handling

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×2

c# ×2

event-handling ×2

events ×1

wpf ×1