Я нашел здесь метод переполнения стека, который удаляет все обработчики событий из данного события. Однако, когда я скопировал код в свою программу, он дал мне ошибку «Ссылка не установлена на экземпляр».Мой код дескриптора обработчика событий не работает
Вот код в вопросе:
FieldInfo f1 = typeof(Control).GetField("DocumentCompleted",
BindingFlags.Static | BindingFlags.NonPublic);
object obj = f1.GetValue(browser);
PropertyInfo pi = browser.GetType().GetProperty("Events",
BindingFlags.NonPublic | BindingFlags.Instance);
EventHandlerList list = (EventHandlerList)pi.GetValue(browser, null);
list.RemoveHandler(obj, list[obj]);
Ошибка произошла на этой линии:
object obj = f1.GetValue(browser);
Объекта браузера является экземпляром WebBrowser, и это было instantized в этой точке.
Редактировать: Пришел другой способ удаления обработчиков.
ошибка будет означать, что это 'f1', который не был установлен. – ChrisF
попробуйте это 'FieldInfo f1 = typeof (Control) .GetField (" DocumentCompleted ")'. remove BindingFlags – ebattulga
Все еще null, он не работал для меня. – TheGateKeeper