Оператор AddHandler
Связывает событие с обработчиком событий во время выполнения.
Синтаксис
AddHandler event, {AddressOf eventhandler | expression }
Детали
Часть | Description |
---|---|
event |
Имя обрабатываемого события. |
eventhandler |
Имя процедуры, обрабатывающей событие. |
expression |
Лямбда-выражение, обрабатывающее событие. |
Части AddressOf eventhandler
и expression
являются взаимоисключающими.
Замечания
RemoveHandler
Инструкции AddHandler
позволяют запускать и останавливать обработку событий в любое время во время выполнения программы.
Подпись нового обработчика событий ( eventhandler
процедура или expression
лямбда)должна соответствовать сигнатуре события event
.
Как ключевое слово Handles
так и оператор AddHandler
позволяют задать обработку определенных событий конкретными процедурами, но между ними существуют различия. Оператор AddHandler
подключает процедуры к событиям во время выполнения. Используйте ключевое слово Handles
при определении процедуры, чтобы указать, что она обрабатывает определенное событие. Дополнительные сведения см. в разделе "Дескрипторы".
Обработчик, добавленный с явным лямбда-лямбда-маркером, не может быть удален позже (с помощью RemoveHandler
). Действительно, если лямбда-лямбда не присваивается имени, это невозможно ссылаться позже. Но назначение лямбда-лямбда переменной и добавление обработчика через эту переменную позволяет удалить обработчик с помощью этой переменной.
Примечание.
Для пользовательских событий AddHandler
оператор вызывает метод доступа события AddHandler
. Дополнительные сведения о пользовательских событиях см . в инструкции event.
Пример
Sub TestEvents()
Dim Obj As New Class1
' Associate an event handler with an event.
AddHandler Obj.Ev_Event, AddressOf EventHandler
' Call the method to raise the event.
Obj.CauseSomeEvent()
' Stop handling events.
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
' This event will not be handled.
Obj.CauseSomeEvent()
' Associate an event handler with an event, using a lambda.
' This handler cannot be removed.
AddHandler Obj.Ev_Event, Sub ()
MsgBox("Lambda caught event.")
End Sub
' This event will be handled by the lambda above.
Obj.CauseSomeEvent()
End Sub
Sub EventHandler()
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
Public Class Class1
' Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class