.net中的事件引發

事件功能是由三個互相聯繫的元素提供的:提供事件數據的類、事件委託和引發事件的類。.NET Framework 具有命名與事件相關的類和方法的約定。如果希望您的類引發一個名爲 EventName 的事件,您需要以下元素:

  • 包含事件數據的類,名爲 EventNameEventArgs。該類必須從 System.EventArgs 導出。

  • 事件的委託,名爲 EventNameEventHandler

  • 引發事件的類。該類必須提供事件聲明 (EventName) 和引發事件 (OnEventName) 的方法。

.NET Framework 類庫或第三方類庫中可能已經定義了事件數據類和事件委託類。在這種情況下,您就不需要定義這些類了。例如,如果您的事件不使用自定義數據,可以使用 System.EventArgs 作爲事件數據並使用 System.EventHandler 作爲委託。

使用 event 關鍵字在類中定義事件成員。當編譯器在類中遇到 event 關鍵字時,它會創建一個私有成員,例如:

private EventNameHandler eh = null;

編譯器還會創建兩個公共方法,即 add_EventNameremove_EventName。這些方法是事件掛鉤,它們允許委託與事件委託 eh 合併或從該事件委託中移除。這些詳細信息對程序員是隱藏的。

Note注意

在除 C# 和 Visual Basic 2005 以外的其他語言中,編譯器可能不自動生成與事件成員對應的代碼,您可能需要顯式地定義事件掛鉤和私有委託字段。

定義事件實現後,您必須確定引發事件的時間。通過在定義事件的類或派生類中調用受保護的 OnEventName 方法來引發事件。OnEventName 方法通過調用委託,傳入所有事件特定的數據來引發事件。事件的委託方法可以執行事件操作或處理事件特定的數據。

Note注意

受保護的 OnEventName 方法也允許派生類重寫事件,而不必向其附加委託。派生類必須始終調用基類的 OnEventName 方法以確保註冊的委託接收到事件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章