Поделиться через


Оператор 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

См. также