Duplicar posible: How would that be possible to remove all event handlers of the Click event of a Button?¿Cómo eliminar todos los controladores de eventos Click?
que desea eliminar todos los controladores de eventos Click de un botón. Encontré este método en la pregunta de desbordamiento de pila How to remove all event handlers from a control.
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]);
}
Pero esta línea siempre devuelve nulo:
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Y este método fue escrito en 2006.
¿Hay alguna versión más reciente de este método?
Nota: Estoy trabajando con WPF y .NET 4.0.
que pueda No ayuda mucho por qué está volviendo nulo, pero @JonSkeet tiene una muy buena respuesta en http://stackoverflow.com/questions/6828054/how-would-the-be-possible-to-remove-all-event-handlers -of-the-click-event-of-a sobre por qué esto no es posible sin reflexión. Quizás necesite abordar el problema de manera diferente. –
¿Cuál es el problema fundamental que estás tratando de resolver/objetivo que estás tratando de lograr? – RQDQ
¿Se da cuenta de que está tratando de aplicar el código de WinForms a WPF? – Douglas