共用方式為


引發事件

事件功能由三個相互關聯的項目來提供:提供事件資料的類別、事件委派和引發事件的類別。.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 中移除的事件攔截程序 (Hook)。這些詳細資料是程式設計人員所看不到的。

Note注意事項

在 C# 和 Visual Basic 2005 以外的語言中,編譯器可能不會自動產生對應事件成員的程式碼,因此您可能必須明確地定義事件攔截程序和私用委派欄位。

一旦定義了事件實作,您就必須決定何時要引發事件。您可以在定義此事件的類別或衍生類別中呼叫受保護的 OnEventName 方法,藉此引發事件。OnEventName 方法會叫用 (Invoke) 委派,傳入任何事件特定的資料,藉以引發事件。事件的委派方法可以為事件執行動作,也可以處理事件特定的資料。

Note注意事項

受保護的 OnEventName 方法也允許衍生類別 (Derived Class) 覆寫該事件,而不附加委派到它上面。衍生類別必定要呼叫基底類別的 OnEventName 方法以確保註冊的委派能接收事件。

當您想要處理在其他類別中引發的事件時,可以在事件中加入委派方法。如果您不太熟悉 .NET Framework 中事件的委派模型,請參閱事件和委派

請參閱

工作

HOW TO:引發和使用事件
HOW TO:在您的類別中實作事件

概念

事件和委派

其他資源

處理和引發事件