如何在 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 语句 来将事件处理程序与事件取消关联。

请参阅