共用方式為


事件概觀 (Windows Form)

更新:2007 年 11 月

事件是您可以在程式碼中回應或「處理」的動作。使用者的動作可以產生事件,例如按下滑鼠或鍵盤按鍵,程式碼或系統也可以產生事件。

事件驅動 (Event-Driven) 的應用程式在回應事件時會執行程式碼。每個表單和控制項都會顯露一組可經由程式設計以預先定義的事件。如果發生這種事件,而且關聯的事件處理常式中有程式碼,就會叫用此程式碼。

物件所引發的事件有多種類型,但對大部分控制項來說,許多類型都是常見的。例如大部分物件都會處理 Click 事件。當使用者按下某個表單時,該表單 Click 事件處理常式內的程式碼便會執行。

注意事項:

許多事件會和其他事件一起發生。例如發生 DoubleClick 事件時,MouseDownMouseUpClick 事件也會一起發生。

如需如何引發和使用事件的詳細資訊,請參閱 HOW TO:引發和使用事件。如需如何連接事件處理常式和方法的範例,請參閱 HOW TO:將事件處理常式方法連接到事件

委派及其角色

委派是在 .NET Framework 內經常用來建立事件處理機制的類別。委派大致上等同於 Visual C++ 和其他物件導向語言中常用的函式指標。不過,與函式指標不同的是,委派是物件導向、型別安全而且安全的。除此之外,函式指標只包含對一特定函式的參考,而委派則由一個物件的參考及在物件內對一個或多個方法的參考構成。

這種事件模型使用「委派」(Delegate) 將事件和處理它們的方法繫結在一起。委派讓其他類別得以透過指定事件處理方法的方式註冊事件告知。當事件發生時,委派會呼叫繫結的方法。如需如何定義委派的詳細資訊,請參閱事件和委派

您可將委派繫結至單一方法或是多個方法,這就稱為多點傳送 (Multicasting)。為一個事件建立委派時,您 (或是 Windows Form 設計工具) 通常就是建立一個多點傳送事件。如果事件產生的特定程序 (例如顯示對話方塊) 邏輯上在一個事件中不會多次重複,這種事件則屬於少見的例外。如需如何建立多點傳送委派的詳細資訊,請參閱 HOW TO:組合委派 (多點傳送委派) (C# 程式設計手冊)

多點傳送的委派會維持其繫結方法的引動過程清單。多點傳送的委派提供 Combine 方法讓您將方法加入至引動過程清單內,以及 Remove 方法將引動過程清單內的方法移除。

當應用程式記錄事件時,控制項會藉由叫用事件的委派來引發這個事件。接著委派會呼叫繫結方法。在常見的情況 (多點傳送的委派) 中,委派會輪流呼叫每一個在引動過程清單中的繫結方法,提供一對多 (One-To-Many) 的告知。這種方法表示控制項不需要維護目標物件清單以進行事件告知 — 委派會處理所有的註冊和告知。

委派也可以將多個事件繫結至相同的方法,達到多對一的告知功能。例如,一個 button-click 事件和一個 menu-command-click 事件可叫用同樣的委派,然後它再利用相同的方式呼叫單一方法來處理這些不同的事件。

委派所採用的繫結機制是動態的:委派可在執行階段繫結至簽章與事件處理常式相符的任何方法。這個功能允許您視情況設定或是變更繫結方法,並且動態地將事件處理常式附加到控制項。

請參閱

概念

事件處理常式概觀 (Windows Form)

其他資源

在 Windows Form 中建立事件處理常式