WithEvents 语句和 Handles 子句
更新:2007 年 11 月
WithEvents 语句和 Handles 子句为指定事件处理程序提供了声明方法。用 WithEvents 关键字所声明对象引发的事件可以由任何过程用该事件的 Handles 语句来处理,如下面的示例所示:
' 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 变量允许单个事件处理程序来处理一类或多类事件,或一个或多个事件处理程序来处理同类事件。