我在堆棧溢出中發現了一個方法,它從給定事件中剝離所有事件處理程序。但是,當我將代碼複製到我的程序中時,它給了我一個「未設置爲實例的引用」錯誤。我的事件處理程序剝離程序代碼不起作用
這裏是有問題的代碼:
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