Я нашел здесь метод переполнения стека, который удаляет все обработчики событий из данного события. Однако, когда я скопировал код в свою программу, он выдал ошибку «Ссылка не установлена на экземпляр».
Вот код вопроса:
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, и он был создан на этом этапе.
Редактировать: Придумал другой способ удаления обработчиков.