HOW TO:在 Visual Basic 中呼叫事件處理常式
「事件」(Event) 是指某個程式元件可以辨認,而且您可以撰寫程式碼予以回應的動作或項目,例如按一下滑鼠或信用額度超過。 「事件處理常式」(Event Handler) 是撰寫來回應事件的程式碼。
Visual Basic 中的事件處理常式是 Sub 程序。 不過,您通常不會以呼叫其他 Sub 程序的相同方式來呼叫它, 而是將程序識別為事件的處理常式。 使用 Handles 子句 (Visual Basic) 子句和 WithEvents (Visual Basic) 變數,或使用 AddHandler 陳述式,即可做這樣的處理。 使用 Handles 子句是在 Visual Basic 中宣告事件處理常式的預設方法。 這是在整合式開發環境 (IDE) 中進行程式設計時,設計工具撰寫事件處理常式的方式。 AddHandler 陳述式 (Statement) 適合在執行階段動態引發事件。
發生事件時,Visual Basic 會自動呼叫事件處理常式程序。 具有事件存取權的所有程式碼只要執行 RaiseEvent 陳述式,即可引發該事件。
可使一個以上的事件處理常式與相同事件產生關聯。 在一些情況下,可取消處理常式與事件的關聯。 如需詳細資訊,請參閱 事件 (Visual Basic)。
若要使用 Handles 和 WithEvents 呼叫事件處理常式
請確定是使用 Event 陳述式來宣告事件。
使用 WithEvents (Visual Basic) 關鍵字,在模組或類別 (Class) 層級宣告物件變數。 這個變數的 As 子句必須指定可引發該事件的類別。
在事件處理 Sub 程序的宣告中,加入可指定 WithEvents 變數和事件名稱的 Handles 子句 (Visual Basic) 子句。
發生事件時,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 呼叫事件處理常式
請確定是使用 Event 陳述式來宣告事件。
執行 AddHandler 陳述式,以動態連接事件處理 Sub 程序與事件。
發生事件時,Visual Basic 會自動呼叫 Sub 程序。 程式碼可使用 RaiseEvent 陳述式來引發該事件。
下列範例會定義 Sub 程序,以處理表單的 Closing 事件。 然後,使用 AddHandler 陳述式將 catchClose 程序關聯成 Closing 的事件處理常式。
' Place these procedures inside a Form class definition. Private Sub catchClose(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) ' Insert code to deal with impending closure of this form. End Sub Public Sub formOpened() AddHandler Me.Closing, AddressOf catchClose End Sub
執行 RemoveHandler 陳述式,即可取消事件處理常式與事件的關聯。
請參閱
工作
HOW TO:呼叫不傳回值的程序 (Visual Basic)