Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Observações
As AddHandler instruções e RemoveHandler as instruções permitem que você inicie e interrompa o tratamento de eventos a qualquer momento durante a execução do programa.
A assinatura do novo manipulador de eventos (o eventhandler procedimento ou lambda expression ) deve corresponder à assinatura do evento event.
A Handles palavra-chave e a AddHandler instrução permitem que você especifique 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 mais tarde (usando RemoveHandler). De fato, 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 AddHandler instrução invoca o acessador do AddHandler evento. Para obter mais informações sobre eventos personalizados, consulte a Instrução de Evento.
Exemplo
O exemplo a seguir demonstra como usar AddHandler com ConvertEventHandler delegados para cenários de associação de dados. Este exemplo mostra um caso de uso prático no qual os manipuladores de eventos são anexados Format e Parse eventos de um Binding objeto a serem convertidos entre valores decimais e cadeias de caracteres de moeda.
Public Class DataBindingExample
Private textBox1 As TextBox
Private ds As DataSet
Public Sub New()
textBox1 = New TextBox()
ds = New DataSet()
SetupSampleData()
BindControlWithAddHandler()
End Sub
Private Sub SetupSampleData()
Dim table As New DataTable("Orders")
table.Columns.Add("OrderAmount", GetType(Decimal))
table.Rows.Add(123.45D)
table.Rows.Add(67.89D)
ds.Tables.Add(table)
End Sub
Private Sub BindControlWithAddHandler()
Dim binding As New Binding("Text", ds, "Orders.OrderAmount")
' Use AddHandler to associate ConvertEventHandler delegates
AddHandler binding.Format, AddressOf DecimalToCurrency
AddHandler binding.Parse, AddressOf CurrencyToDecimal
textBox1.DataBindings.Add(binding)
End Sub
Private Sub DecimalToCurrency(ByVal sender As Object, ByVal e As ConvertEventArgs)
If e.DesiredType IsNot GetType(String) Then
Return
End If
e.Value = CDec(e.Value).ToString("c")
End Sub
Private Sub CurrencyToDecimal(ByVal sender As Object, ByVal e As ConvertEventArgs)
If e.DesiredType IsNot GetType(Decimal) Then
Return
End If
e.Value = Convert.ToDecimal(e.Value.ToString())
End Sub
End Class
' Simple example for basic AddHandler usage
Sub TestBasicEvents()
Dim Obj As New Class1
AddHandler Obj.Ev_Event, AddressOf EventHandler
Obj.CauseSomeEvent()
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
Obj.CauseSomeEvent()
' Lambda expression example
AddHandler Obj.Ev_Event, Sub ()
MsgBox("Lambda caught event.")
End Sub
Obj.CauseSomeEvent()
End Sub
Sub EventHandler()
MsgBox("EventHandler caught event.")
End Sub
Public Class Class1
Public Event Ev_Event()
Sub CauseSomeEvent()
RaiseEvent Ev_Event()
End Sub
End Class
Este exemplo mostra:
- Criando um
Bindingobjeto para associação de dados. - Usar
AddHandlerpara anexarConvertEventHandlerdelegados aos eventos e aoFormateventoParse. - Implementando métodos de manipulador de eventos que convertem entre formatos de cadeia de caracteres decimal e moeda.
- Uso básico
AddHandlercom eventos personalizados e expressões lambda.