Instrução AddHandler
Associa um evento a um manipulador de eventos em tempo de execução.
Sintaxe
AddHandler event, {AddressOf eventhandler | expression }
Partes
Parte | Descrição |
---|---|
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.
Comentários
As instruções AddHandler
e RemoveHandler
permitem que você inicie e pare a manipulação a qualquer momento durante a execução do programa.
A assinatura do novo manipulador de eventos (o procedimento eventhandler
ou o expression
lambda) deve corresponder à assinatura do evento event
.
A palavra-chave Handles
e a instruçãoAddHandler
permitem que você especifique que procedimentos específicos manipulem eventos específicos, mas há diferenças. A instrução AddHandler
conecta procedimentos a eventos em tempo de execução. Use a palavra-chave Handles
ao definir um procedimento para especificar que ele manipula um evento específico. Para obter mais informações, confira Identificadores.
Um manipulador adicionado com um lambda explícito NÃO PODE ser removido posteriormente (usando RemoveHandler
). Na verdade, se o lambda não receber um nome, não será possível referenciá-lo 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.
Observação
Para eventos personalizados, a instrução AddHandler
invoca o acessador do evento AddHandler
. Para obter mais informações sobre eventos personalizados, confira Instruçã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