WithEvents 和 Handles 子句
更新:2007 年 11 月
WithEvents 陳述式和 Handles 子句讓您以宣告的方式來指定事件處理常式。透過任何適用於該事件之具有 Handles 陳述式的程序,即可處理藉由 WithEvents 關鍵字所宣告之物件所引發的事件,如以下範例所示:
' Declare a WithEvents variable.
Dim WithEvents EClass As New EventClass
' Call the method that raises the object's events.
Sub TestEvents()
EClass.RaiseEvents()
End Sub
' Declare an event handler that handles multiple events.
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
MsgBox("Received Event.")
End Sub
Class EventClass
Public Event XEvent()
Public Event YEvent()
' RaiseEvents raises both events.
Sub RaiseEvents()
RaiseEvent XEvent()
RaiseEvent YEvent()
End Sub
End Class
WithEvents 陳述式和 Handles 子句通常是事件處理常式的最佳選擇,原因在於它們所使用的宣告式語法能讓事件處理更容易編碼、讀取和偵錯。但請注意下列使用 WithEvents 變數的限制:
您無法將 WithEvents 變數當做物件變數使用。也就是說,您無法將其宣告為 Object,而是當您宣告變數時,就必須指定類別名稱。
因為未將共用事件繫結至類別執行個體,因此您不能以宣告方式使用 WithEvents 控制共用事件。同樣地,您也不能使用 WithEvents 或 Handles 處理 Structure 中的事件。在這兩種情況下,您都可以使用 AddHandler 陳述式控制這些事件。
您無法建立 WithEvents 變數的陣列。
WithEvents 變數可讓單一事件處理常式處理一種或多種事件,或者是讓一個或以上的事件處理常式來處理相同的事件。