Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
-
BindingObjektum létrehozása adatkötéshez. - Meghatalmazottak
AddHandlercsatolásaConvertEventHandleraz eseményekhez ésParseesemé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ű
AddHandlerhasználat egyéni eseményekkel és lambdakifejezésekkel.