共用方式為


如何在 Visual Basic 中呼叫事件處理常式

事件是動作或出現次數,例如滑鼠按一下或超過信用額度限制,這是由某些程式元件所辨識,而且您可以撰寫程式碼來回應。 事件處理常式是您撰寫以回應事件的程式碼。

Visual Basic 中的事件處理常式是一個 Sub 程序。 不過,您通常不會以與其他 Sub 程序相同的方式呼叫它。 相反地,您會將程序識別為事件的處理常式。 您可以使用 Handles 子句和 WithEvents 變數,或使用 AddHandler 陳述式來執行此動作。 使用 Handles 子句是在 Visual Basic 中宣告事件處理常式的預設方式。 這是當您在整合式開發環境中 (IDE) 進行程式設計時,設計工具撰寫事件處理常式的方式。 AddHandler 陳述式適用於在執行階段動態引發事件。

事件發生時,Visual Basic 會自動呼叫事件處理常式程序。 具有事件存取權的任何程式碼,都可以藉由執行 RaiseEvent 陳述式來觸發此事件。

您可以將多個事件處理常式與相同的事件產生關聯。 在某些情況下,您可以將處理常式與事件中斷關聯。 如需詳細資訊,請參閱事件

使用 Handles 和 WithEvents 呼叫事件處理常式

  1. 請確定事件是以 Event 陳述式宣告。

  2. 使用 WithEvents 關鍵字,在模組或類別層級宣告物件變數。 這個變數的 As 子句必須指定引發事件的類別。

  3. 在事件處理 Sub 的宣告中,加入指定WithEvents 變數和事件名稱的 Handles 子句。

  4. 事件發生時,Visual Basic 會自動呼叫 Sub 程序。 您的程式碼可以使用 RaiseEvent 陳述式來讓事件發生。

    下列範例會定義事件和參考引發事件之類別的 WithEvents 變數。 事件處理 Sub 程序會使用 Handles 子句來指定類別和它所處理的事件。

    Public Class RaisesEvent
        Public Event SomethingHappened()
        Dim WithEvents happenObj As New RaisesEvent
        Public Sub ProcessHappen() Handles happenObj.SomethingHappened
            ' Insert code to handle somethingHappened event.
        End Sub
    End Class
    

使用 AddHandler 呼叫事件處理常式

  1. 請確定事件是以 Event 陳述式宣告。

  2. 執行 AddHandler 陳述式,以動態方式連接事件處理 Sub 程序與事件。

  3. 事件發生時,Visual Basic 會自動呼叫 Sub 程序。 您的程式碼可以使用 RaiseEvent 陳述式來讓事件發生。

    下列範例會使用建構函式中的 AddHandler 陳述式,將 OnFormClosing 程序關聯為 FormClosing 的事件處理常式。

    Sub New()
        InitializeComponent()
        AddHandler Me.FormClosing, AddressOf OnFormClosing
    End Sub
    
    Private Sub OnFormClosing(sender As Object, e As FormClosingEventArgs)
        ' Insert code to deal with impending closure of this form.
    End Sub
    

    您可以藉由執行 RemoveHandler 陳述式,將事件處理常式與事件中斷關聯。

另請參閱