Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přidruží událost k obslužné rutině události za běhu.
Syntaxe
AddHandler event, {AddressOf eventhandler | expression }
Součástky
| Část | Popis |
|---|---|
event |
Název události, která se má zpracovat. |
eventhandler |
Název procedury, která zpracovává událost. |
expression |
Výraz lambda, který zpracovává událost. |
AddressOf eventhandler Části a expression vzájemně se vylučují.
Poznámky
Tyto AddHandler příkazy RemoveHandler umožňují kdykoli během provádění programu spouštět a zastavovat zpracování událostí.
Podpis nové obslužné rutiny události (procedura eventhandlerexpression nebo lambda) musí odpovídat podpisu události event.
Klíčové Handles slovo i AddHandler příkaz umožňují určit, že konkrétní procedury zpracovávají konkrétní události, ale existují rozdíly. Příkaz AddHandler připojuje procedury k událostem za běhu.
Handles Klíčové slovo použijte při definování procedury k určení, že zpracovává konkrétní událost. Další informace najdete v tématu Popisovače.
Obslužnou rutinu přidanou s explicitním výrazem lambda nelze později (pomocí RemoveHandler). Pokud není lambda pojmenována, není však možné na ni později odkazovat. Přiřazení lambda k proměnné a přidání obslužné rutiny prostřednictvím této proměnné však umožňuje odebrat obslužnou rutinu pomocí této proměnné.
Poznámka:
U vlastních událostí vyvolá AddHandler příkaz přístupové objekty AddHandler události. Další informace o vlastních událostech najdete v tématu Příkaz události.
Příklad
Následující příklad ukazuje použití AddHandler s ConvertEventHandler delegáty pro scénáře datových vazeb. Tento příklad ukazuje praktický případ použití, kdy obslužné rutiny událostí jsou připojeny k Format objektu Binding a Parse události objektu pro převod mezi desetinnými hodnotami a řetězci měny.
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
Tento příklad ukazuje:
- Vytvoření objektu
Bindingpro datovou vazbu - Používá
AddHandlerse k připojeníConvertEventHandlerdelegátů k událostem aParseudálostemFormat. - Implementace metod obslužné rutiny událostí, které převádějí mezi formáty desetinných míst a řetězce měny
- Základní
AddHandlerpoužití s vlastními událostmi a výrazy lambda