Предложение Handles (Visual Basic)

Заявляет, что процедура обрабатывает указанное событие.

Синтаксис

proceduredeclaration Handles eventlist

Детали

proceduredeclaration Объявление Sub процедуры для процедуры, которая будет обрабатывать событие.

eventlist Список событий для proceduredeclaration обработки, разделенных запятыми. События должны вызываться базовым классом для текущего класса либо объектом, объявленным с помощью ключевого слова WithEvents.

Замечания

Используйте ключевое слово Handles в конце объявления процедуры, чтобы она обрабатывала события, вызванные переменной объекта, которая объявлена с помощью ключевого слова WithEvents . Ключевое слово Handles может также использоваться в производном классе для обработки событий из базового класса.

Как ключевое слово Handles так и оператор AddHandler позволяют задать обработку определенных событий конкретными процедурами, но между ними существуют различия. Используйте ключевое слово Handles при определении процедуры, чтобы указать, что она обрабатывает определенное событие. Оператор AddHandler подключает процедуры к событиям во время выполнения. Дополнительные сведения см. в инструкции AddHandler.

Для пользовательских событий приложение вызывает метод доступа AddHandler события во время добавления процедуры в качестве обработчика событий. Дополнительные сведения о пользовательских событиях см . в инструкции event.

Пример 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

Следующий пример эквивалентен предыдущему примеру: eventlist в предложении Handles содержит события для обеих кнопок.

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

См. также