thể trùng lặp: How would that be possible to remove all event handlers of the Click event of a Button?Làm cách nào để xóa tất cả trình xử lý sự kiện Nhấp?
Tôi muốn loại bỏ tất cả các xử lý sự kiện nhấp chuột từ một nút. Tôi đã tìm thấy phương pháp này trong câu hỏi Stack Overflow 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]);
}
Nhưng dòng này luôn trả về null:
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Và phương pháp này đã được viết vào năm 2006.
Có bất kỳ phiên bản mới nhất của phương pháp này?
Lưu ý: Tôi đang làm việc với WPF và .NET 4.0.
tôi có thể 't giúp đỡ nhiều cho lý do tại sao đó là trở về null, nhưng @JonSkeet có một câu trả lời khá tốt tại http://stackoverflow.com/questions/6828054/how-would-that-be-possible-to-remove-all-event-handlers -of-the-click-event-of-a về lý do tại sao điều này là không thể mà không có sự phản ánh. Có lẽ bạn cần phải tiếp cận vấn đề một cách khác nhau. –
Vấn đề cơ bản bạn đang cố gắng giải quyết/mục tiêu bạn đang cố gắng thực hiện là gì? – RQDQ
Bạn nhận ra rằng bạn đang cố gắng áp dụng mã WinForms cho WPF? – Douglas