Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kojarzy zdarzenie z programem obsługi zdarzeń w czasie wykonywania.
Składnia
AddHandler event, {AddressOf eventhandler | expression }
Części
| Część | Opis |
|---|---|
event |
Nazwa zdarzenia do obsługi. |
eventhandler |
Nazwa procedury obsługującej zdarzenie. |
expression |
Wyrażenie lambda obsługujące zdarzenie. |
AddressOf eventhandler Części i expression wzajemnie się wykluczają.
Uwagi
Instrukcje AddHandler i RemoveHandler umożliwiają uruchamianie i zatrzymywanie obsługi zdarzeń w dowolnym momencie podczas wykonywania programu.
Podpis nowej procedury obsługi zdarzeń ( eventhandler procedura lub expression lambda) musi być zgodny z podpisem zdarzenia event.
Słowo Handles kluczowe i AddHandler instrukcja umożliwiają określenie, że określone procedury obsługują określone zdarzenia, ale istnieją różnice. Instrukcja AddHandler łączy procedury z zdarzeniami w czasie wykonywania. Użyj słowa kluczowego Handles podczas definiowania procedury, aby określić, że obsługuje określone zdarzenie. Aby uzyskać więcej informacji, zobacz Handles (Obsługa).
Procedura obsługi dodana z jawnym elementem lambda NIE MOŻE zostać usunięta później (przy użyciu polecenia RemoveHandler). Rzeczywiście, jeśli lambda nie ma nazwy, nie można odwoływać się do niej później. Jednak przypisanie lambda do zmiennej i dodanie procedury obsługi za pomocą tej zmiennej umożliwia usunięcie programu obsługi przy użyciu tej zmiennej.
Uwaga / Notatka
W przypadku zdarzeń niestandardowych instrukcja AddHandler wywołuje metodę dostępu zdarzenia AddHandler . Aby uzyskać więcej informacji na temat zdarzeń niestandardowych, zobacz Event Statement (Instrukcja zdarzenia).
Przykład
W poniższym przykładzie pokazano, jak używać z AddHandler delegatami ConvertEventHandler w scenariuszach powiązań danych. W tym przykładzie przedstawiono praktyczny przypadek użycia, w którym programy obsługi zdarzeń są dołączane do Format zdarzeń i Parse zdarzenia Binding obiektu do konwersji między wartościami dziesiętnymi i ciągami walutowymi.
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
W tym przykładzie pokazano:
-
BindingTworzenie obiektu dla powiązania danych. - Użyj polecenia
AddHandler, aby dołączyćConvertEventHandlerdelegatów do zdarzeńFormatiParse. - Implementowanie metod obsługi zdarzeń, które konwertują formaty ciągów dziesiętnych i walutowych.
- Podstawowe
AddHandlerużycie z niestandardowymi zdarzeniami i wyrażeniami lambda.