가능한 중복 : How would that be possible to remove all event handlers of the Click event of a Button?클릭 이벤트 핸들러를 모두 제거하는 방법은 무엇입니까?
내가 버튼에서 모든 클릭 이벤트 핸들러를 제거 할. 스택 오버플로 질문에서이 메서드를 찾았습니다 How to remove all event handlers from a control. 이 방법의 최신 버전이
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
그리고이 방법은 2006 년
작성되었습니다 :
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이 반환?
참고 : WPF 및 .NET 4.0으로 작업하고 있습니다.
내가 할 수있는 그게 null을 돌려주는 이유에 대해 많은 도움을 주지만, @ JonSkeet은 http://stackoverflow.com/questions/6828054/how-would-that-be-possible-to-remove-all-event-handlers에서 꽤 좋은 답변을 가지고 있습니다. 이것이 반성없이 가능하지 않은 이유에 대한 클릭 이벤트 (click-of-the-click-event-of-a). 문제를 다르게 접근해야 할 수도 있습니다. –
달성하고자하는 근본적인 문제는 무엇입니까? – RQDQ
WPF에 WinForms 코드를 적용하려고한다는 것을 알고 있습니까? – Douglas