Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Связывает событие с обработчиком событий во время выполнения.
Синтаксис
AddHandler event, {AddressOf eventhandler | expression }
Комплектующие
| Часть | Описание |
|---|---|
event |
Имя обрабатываемого события. |
eventhandler |
Имя процедуры, обрабатывающей событие. |
expression |
Лямбда-выражение, обрабатывающее событие. |
Части AddressOf eventhandler и expression являются взаимоисключающими.
Замечания
AddHandler Инструкции RemoveHandler позволяют запускать и останавливать обработку событий в любое время во время выполнения программы.
Подпись нового обработчика событий ( eventhandler процедура или expression лямбда)должна соответствовать сигнатуре события event.
Ключевое Handles слово и AddHandler оператор позволяют указать, что определенные процедуры обрабатывают определенные события, но существуют различия. Инструкция AddHandler подключает процедуры к событиям во время выполнения. Используйте ключевое Handles слово при определении процедуры, чтобы указать, что она обрабатывает определенное событие. Дополнительные сведения см. в разделе "Дескрипторы".
Обработчик, добавленный с явным лямбда-лямбда-маркером, не может быть удален позже (с помощью RemoveHandler). Действительно, если лямбда-лямбда не присваивается имени, это невозможно ссылаться позже. Но назначение лямбда-лямбда переменной и добавление обработчика через эту переменную позволяет удалить обработчик с помощью этой переменной.
Замечание
Для пользовательских событий AddHandler оператор вызывает метод доступа события AddHandler . Дополнительные сведения о пользовательских событиях см. в инструкции event.
Пример
В следующем примере показано, как использовать AddHandler делегатов ConvertEventHandler для сценариев привязки данных. В этом примере показан практический вариант использования, в котором обработчики событий присоединены Format к объекту и Parse события Binding для преобразования между десятичными значениями и строками валют.
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
В этом примере показано:
- Создание объекта для привязки
Bindingданных. - Использование
AddHandlerдля присоединенияConvertEventHandlerделегатов к событиям иParseсобытиямFormat. - Реализация методов обработчика событий, которые преобразуют между десятичными и валютными строковыми форматами.
- Базовое
AddHandlerиспользование пользовательских событий и лямбда-выражений.