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 变量允许单个事件处理程序来处理一类或多类事件,或一个或多个事件处理程序来处理同类事件。

请参见

概念

AddHandler 和 RemoveHandler

参考

Handles

WithEvents

AddHandler 语句