Partilhar via


Declaração AddHandler

Associa um evento a um manipulador de eventos em tempo de execução.

Sintaxe

AddHandler event, {AddressOf eventhandler | expression }

Partes

Parte Description
event O nome do evento a ser manipulado.
eventhandler O nome de um procedimento que manipula o evento.
expression Uma expressão lambda que manipula o evento.

As partes AddressOf eventhandler e expression são mutuamente exclusivas.

Observações

As AddHandler instruções and RemoveHandler permitem iniciar e parar a manipulação de eventos a qualquer momento durante a execução do programa.

A assinatura do novo manipulador de eventos (o eventhandler procedimento ou o expression lambda) deve corresponder à assinatura do evento event.

A Handles palavra-chave e a AddHandler instrução permitem especificar que procedimentos específicos lidam com eventos específicos, mas há diferenças. A AddHandler instrução conecta procedimentos a eventos em tempo de execução. Use a Handles palavra-chave ao definir um procedimento para especificar que ele manipula um evento específico. Para obter mais informações, consulte Identificadores.

Um manipulador adicionado com um lambda explícito NÃO pode ser removido posteriormente (usando RemoveHandler). De facto, se não for dado um nome à lambda, não é possível referi-la mais tarde. Mas atribuir o lambda a uma variável e adicionar o manipulador por meio dessa variável permite remover o manipulador usando essa variável.

Nota

Para eventos personalizados, a AddHandler instrução invoca o acessador do AddHandler evento. Para obter mais informações sobre eventos personalizados, consulte Declaração de evento.

Exemplo

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

Consulte também