Condividi tramite


Istruzione AddHandler

Associa un evento a un gestore eventi in fase di esecuzione.

Sintassi

AddHandler event, {AddressOf eventhandler | expression }

Parti

Parte Descrizione
event Nome dell'evento da gestire.
eventhandler Nome di una routine che gestisce l'evento.
expression Espressione lambda che gestisce l'evento.

Le parti AddressOf eventhandler e expression si escludono a vicenda.

Osservazioni:

Le AddHandler istruzioni e RemoveHandler consentono di avviare e arrestare la gestione degli eventi in qualsiasi momento durante l'esecuzione del programma.

La firma del nuovo gestore eventi (la routine o l'espressione eventhandlerexpression lambda) deve corrispondere alla firma dell'evento event.

La Handles parola chiave e l'istruzione AddHandler consentono entrambi di specificare che determinate procedure gestiscono eventi specifici, ma esistono differenze. L'istruzione AddHandler connette le procedure agli eventi in fase di esecuzione. Usare la Handles parola chiave quando si definisce una routine per specificare che gestisce un determinato evento. Per altre informazioni, vedere Handle.

Un gestore aggiunto con un'espressione lambda esplicita NON PUÒ essere rimosso in un secondo momento (usando RemoveHandler). In effetti, se all'espressione lambda non viene assegnato un nome, non è possibile farvi riferimento in un secondo momento. Tuttavia, l'assegnazione dell'espressione lambda a una variabile e l'aggiunta del gestore tramite questa variabile consente di rimuovere il gestore usando questa variabile.

Annotazioni

Per gli eventi personalizzati, l'istruzione AddHandler richiama la funzione di accesso dell'evento AddHandler . Per altre informazioni sugli eventi personalizzati, vedere Istruzione event.

Esempio

Nell'esempio seguente viene illustrato come usare AddHandler con ConvertEventHandler i delegati per gli scenari di data binding. In questo esempio viene illustrato un caso d'uso pratico in cui i gestori eventi sono associati a Format e Parse gli eventi di un Binding oggetto da convertire tra valori decimali e stringhe di valuta.

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

Questo esempio mostra:

  • Creazione di un Binding oggetto per il data binding.
  • Utilizzo AddHandler di per associare ConvertEventHandler delegati agli Format eventi e Parse .
  • Implementazione dei metodi del gestore eventi che vengono convertiti tra formati di stringa decimale e valuta.
  • Utilizzo di base AddHandler con eventi personalizzati ed espressioni lambda.

Vedere anche