Handles 子句 (Visual Basic)

声明过程处理指定的事件。

语法

proceduredeclaration Handles eventlist

部件

proceduredeclarationSub 处理事件的过程的过程声明。

eventlistproceduredeclaration 处理的事件列表,用逗号分隔。 事件必须由当前类的基类或使用 WithEvents 关键字声明的对象引发。

注解

Handles使用过程声明末尾的关键字,使其处理由使用WithEvents关键字声明的对象变量引发的事件。 还可以在 Handles 派生类中使用关键字来处理基类中的事件。

关键字 HandlesAddHandler 语句都允许指定特定过程处理特定事件,但存在差异。 Handles定义过程以指定它处理特定事件时,请使用关键字。 该 AddHandler 语句在运行时将过程连接到事件。 有关详细信息,请参阅 AddHandler 语句

对于自定义事件,应用程序在将过程添加为事件处理程序时调用事件的 AddHandler 访问器。 有关自定义事件的详细信息,请参阅 事件语句

示例 1

Public Class ContainerClass
    ' Module or class level declaration.
    WithEvents Obj As New Class1

    Public Class Class1
        ' Declare an event.
        Public Event Ev_Event()
        Sub CauseSomeEvent()
            ' Raise an event.
            RaiseEvent Ev_Event()
        End Sub
    End Class

    Sub EventHandler() Handles Obj.Ev_Event
        ' Handle the event.
        MsgBox("EventHandler caught event.")
    End Sub

    ' Call the TestEvents procedure from an instance of the ContainerClass 
    ' class to test the Ev_Event event and the event handler.
    Public Sub TestEvents()
        Obj.CauseSomeEvent()
    End Sub
End Class

以下示例演示派生类 Handles 如何使用该语句处理基类中的事件。

Public Class BaseClass
    ' Declare an event.
    Event Ev1()
End Class
Class DerivedClass
    Inherits BaseClass
    Sub TestEvents() Handles MyBase.Ev1
        ' Add code to handle this event.
    End Sub
End Class

示例 2

以下示例包含 WPF 应用程序 项目的两个按钮事件处理程序。

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

示例 3

以下示例等效于前面的示例。 Handleseventlist句中包含这两个按钮的事件。

Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click, Button2.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

另请参阅