我在堆栈溢出中发现了一个方法,它从给定事件中剥离所有事件处理程序。但是,当我将代码复制到我的程序中时,它给了我一个“未设置为实例的引用”错误。我的事件处理程序剥离程序代码不起作用
这里是有问题的代码:
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);
的浏览器对象是web浏览器的一个实例,它已在这一点上已经速溶。
编辑:想出了一种不同的方式来删除处理程序。
该错误会表明它是'f1'这不是设置。 – ChrisF 2012-03-05 10:31:04
试试这个'FieldInfo f1 = typeof(Control).GetField(“DocumentCompleted”)'。删除BindingFlags – ebattulga 2012-03-05 10:44:36
仍为空,它没有为我工作。 – TheGateKeeper 2012-03-05 10:47:57