Megosztás a következőn keresztül:


AddHandler utasítás

Esemény társítása egy eseménykezelővel futásidőben.

Szemantika

AddHandler event, {AddressOf eventhandler | expression }

Részek

Rész Leírás
event A kezelni kívánt esemény neve.
eventhandler Az eseményt kezelő eljárás neve.
expression Egy lambda kifejezés, amely kezeli az eseményt.

A részek AddressOf eventhandler , és expression kölcsönösen kizárják.

Megjegyzések

AddHandler Az RemoveHandler és az utasítások lehetővé teszik az eseménykezelés elindítását és leállítását a program végrehajtása során bármikor.

Az új eseménykezelő aláírásának (az eventhandler eljárásnak vagy a expression lambda-nak) meg kell egyeznie az esemény eventaláírásával.

A Handles kulcsszó és az AddHandler utasítás egyaránt lehetővé teszi annak megadását, hogy bizonyos eljárások kezeljenek bizonyos eseményeket, de vannak különbségek. Az AddHandler utasítás az eljárásokat futtatáskor kapcsolja össze az eseményekhez. Az eljárás definiálásakor használja a Handles kulcsszót annak megadásához, hogy az egy adott eseményt kezelje. További információ: Leírók.

Az explicit lambdával hozzáadott kezelő nem távolítható el később (a használatával RemoveHandler). Valójában, ha a lambda nem kap nevet, később nem lehet hivatkozni rá. A lambda változóhoz való hozzárendelése és a kezelő ezen a változón keresztüli hozzáadása lehetővé teszi a kezelő eltávolítását ezzel a változóval.

Megjegyzés:

Egyéni események esetén az AddHandler utasítás meghívja az esemény tartozékát AddHandler . Az egyéni eseményekről további információt az Eseményutasítás című témakörben talál.

példa

Az alábbi példa bemutatja, hogyan használható AddHandler delegáltakkal ConvertEventHandler adatkötési forgatókönyvekhez. Ez a példa egy gyakorlati használati esetet mutat be, amelyben az eseménykezelők egy objektumhoz Format vannak csatolva, és Parse egy Binding objektum eseményei, amelyek decimális értékek és pénznemsztringek közötti konvertálást igényelnek.

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

Ez a példa a következőt mutatja be:

  • Binding Objektum létrehozása adatkötéshez.
  • Meghatalmazottak AddHandler csatolása ConvertEventHandler az eseményekhez és Parse eseményekhezFormat.
  • Olyan eseménykezelő metódusok implementálása, amelyek decimális és pénznemsztring-formátumok közötti konvertálást hajtanak végre.
  • Alapszintű AddHandler használat egyéni eseményekkel és lambdakifejezésekkel.

Lásd még