共用方式為


事件和事件處理常式

更新:2007 年 11 月

雖然您可能會將 Visual Studio 專案以視覺化方式顯示為會依序執行的一系列程序,但實際上,大部分程式都是以事件驅動 (表示執行流程是由稱為「事件」的外部發生情況所決定)。

事件是通知應用程式有重要事情發生的信號。例如,當使用者按一下表單上的控制項時,表單會引發 Click 事件並呼叫處理事件的程序。事件也允許個別工作進行通訊。例如,假設您的應用程式在主應用程式外個別執行排序工作。如果使用者取消排序,您的應用程式可傳送取消事件來指示排序過程停止執行。

事件詞彙和概念

本章節將說明在 Visual Basic 中事件所使用的詞彙和概念。

宣告事件

您使用 Event 關鍵字在類別、結構、模組和介面內宣告事件,如以下範例所示:

Event AnEvent(ByVal EventNumber As Integer)

引發事件

事件就像是宣告發生重大事情的訊息。播送訊息的動作稱為「引發」事件。在 Visual Basic 中,您可以使用 RaiseEvent 陳述式 (Statement) 引發事件,如以下範例所示:

RaiseEvent AnEvent(EventNumber)

事件必須在宣告於其中的類別、模組或結構的範圍內引發。例如,衍生類別無法引發繼承自基底類別的事件。

事件傳送者

任何能夠引發事件的物件就是「事件發送者」,也稱為「事件來源」(Event Source)。表單、控制項和使用者定義物件是事件傳送者的幾個範例。

事件處理常式

「事件處理常式」是在發生對應事件時所呼叫的程序。您可以使用任何具有相符簽章 (Signature) 的有效副程式當做事件處理常式。但您不能將函式當做事件處理常式來使用,因為它無法將值傳回事件的來源。

Visual Basic 會將標準命名慣例用於事件處理常式,此慣例結合事件發送者的名稱、底線和事件的名稱。例如,名為 button1 之按鈕的 Click 事件會命名為 Sub button1_Click。

注意事項:

建議您在為自己的事件定義事件處理常式時,使用這種命名慣例,但這並非必要的,您可以使用任何有效的副程式名稱。

建立事件與事件處理常式的關聯

在可使用事件處理常式之前,您必須先使用 Handles 或 AddHandler 陳述式,建立該事件處理常式與事件的關聯。

WithEvents 陳述式和 Handles 子句讓您以宣告的方式來指定事件處理常式。只要副程式具有命名事件的 Handles 子句,就可以處理由利用 WithEvents 宣告之物件所引發的事件。雖然 Handles 子句是讓事件與事件處理常式產生關聯的標準方法,但在編譯時間建立事件與事件處理常式的關聯卻有所限制。

AddHandler 和 RemoveHandler 陳述式較 Handles 子句更具彈性。它們允許您在執行階段時將事件動態連接和中斷連接至一或多個事件處理常式,而且也不需要您使用 WithEvents 來宣告物件變數。不過,使用 WithEvents 會有一些限制。如需詳細資訊,請參閱 WithEvents 和 Handles 子句

在一些情況下 (例如,與表單或控制項關聯的事件),Visual Basic 會自動虛設空的事件處理常式,並使它與事件產生關聯。例如,當您在設計模式中按兩下表單上的命令按鈕時,Visual Basic 會為命令按鈕建立空的事件處理常式和 WithEvents 變數,如以下程式碼所示:

Friend WithEvents Button1 As System.Windows.Forms.Button
Protected Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click
End Sub

請參閱

工作

HOW TO:撰寫事件處理常式

概念

AddHandler 和 RemoveHandler

WithEvents 和 Handles 子句

參考

Handles

AddHandler 陳述式