Поделиться через


Инструкция AddHandler

Связывает событие с обработчиком событий во время выполнения.

Синтаксис

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 использование пользовательских событий и лямбда-выражений.

См. также