Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Associerar en händelse med en händelsehanterare vid körning.
Syntax
AddHandler event, {AddressOf eventhandler | expression }
Delar
| Del | Beskrivning |
|---|---|
event |
Namnet på den händelse som ska hanteras. |
eventhandler |
Namnet på en procedur som hanterar händelsen. |
expression |
Ett lambda-uttryck som hanterar händelsen. |
Delarna AddressOf eventhandler och expression är ömsesidigt uteslutande.
Anmärkningar
Med AddHandler instruktionerna och RemoveHandler kan du starta och stoppa händelsehantering när som helst under programkörningen.
Signaturen för den nya händelsehanteraren (proceduren eventhandler eller expression lambda) måste matcha signaturen för händelsen event.
Med Handles nyckelordet och -instruktionen AddHandler kan du ange att vissa procedurer hanterar vissa händelser, men det finns skillnader. Instruktionen AddHandler ansluter procedurer till händelser vid körning. Använd nyckelordet Handles när du definierar en procedur för att ange att den hanterar en viss händelse. Mer information finns i Referenser.
En hanterare som har lagts till med en explicit lambda KAN INTE tas bort senare (med ).RemoveHandler Om lambda inte får ett namn, är det inte möjligt att hänvisa till det senare. Men om du tilldelar lambda till en variabel och lägger till hanteraren via den här variabeln kan du ta bort hanteraren med hjälp av den här variabeln.
Anmärkning
För anpassade händelser AddHandler anropar -instruktionen händelsens AddHandler accessor. Mer information om anpassade händelser finns i Händelseuttryck.
Exempel
I följande exempel visas hur du använder AddHandler med ConvertEventHandler ombud för databindningsscenarier. Det här exemplet visar ett praktiskt användningsfall där händelsehanterare är kopplade till Format och Parse händelser för ett Binding objekt som ska konverteras mellan decimalvärden och valutasträngar.
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
I det här exemplet visas:
- Skapa ett
Bindingobjekt för databindning. - Använda
AddHandlerför att kopplaConvertEventHandlerombud tillFormathändelserna ochParse. - Implementera händelsehanterarmetoder som konverterar mellan decimal- och valutasträngformat.
- Grundläggande
AddHandleranvändning med anpassade händelser och lambda-uttryck.