2011-11-29 89 views
2

如果您將Winform MouseDown事件設置爲方法,您將如何清空或重置事件。所以它在發生火災時沒有辦法調用。如何使事件再次變爲空?

就拿:

MouseDown += new System.Windows.Forms.MouseEventHandler(@SelectMouseDown); 

而且要MouseDown事件重置爲無或零或零。

我覺得我躲避了一些其他StackOverflow問題。

MouseDown -= System.Windows.Forms.MouseEventHandler(@SelectMouseDown); 

它不起作用。

+0

如果將其設置爲空,會發生什麼? – MilkyWayJoe

+0

Thiago Santos:當我將它設置爲Nil時,編譯器產生一個錯誤,「無法訪問基礎事件」 – ThN

回答

2

沒有做任何測試,但這應該做的工作。將「新」添加到行首

MouseDown -= new System.Windows.Forms.MouseEventHandler(@SelectMouseDown); 
2

在這種情況下,您正在使用另一種類型所擁有的事件。沒有辦法完全清除處理程序列表。您只能刪除您有權訪問相應代理的處理程序。通常這是您添加的一組處理程序。

您顯示的代碼將刪除MouseDown中的處理程序SelectMouseDown。但它不會清除任何其他人。

如果您擁有該事件,則刪除所有處理程序與將事件設置爲null一樣簡單。

private event EventHandler _mouseDownEvent; 
public event EventHandler MouseDown { 
    add { _mouseDownEvent += value; } 
    remove { _mouseDownEvent -= value; } 
} 

void ClearMouseDown() { 
    _mouseDownEvent = null; 
}