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 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 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.

Observação

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

O exemplo a seguir demonstra como usar AddHandler com ConvertEventHandler delegados para cenários de vinculação de dados. Este exemplo mostra um caso de uso prático em Format que manipuladores de eventos são anexados e Parse eventos de um Binding objeto para converter 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:

  • Criação de um Binding objeto para vinculação de dados.
  • Usando AddHandler para anexar ConvertEventHandler delegados aos Format eventos e Parse .
  • Implementação de métodos de manipulador de eventos que convertem entre formatos de cadeia de caracteres decimal e de moeda.
  • Uso básico AddHandler com eventos personalizados e expressões lambda.

Ver também