Практическое руководство. Вызов обработчика событий в Visual Basic
Событие — это действие или условие (например, щелчок мыши или превышение кредита), которое распознается некоторым компонентом программы и для обработки которого можно написать код. Обработчик событий — это код, предназначенный для обработки события.
Обработчик событий в Visual Basic — это процедура Sub. Однако ее нельзя вызвать так же, как другие процедуры Sub. Вместо этого необходимо определить процедуру в качестве обработчика для события. Можно сделать это с помощью предложения Предложение Handles (Visual Basic) и переменной WithEvents (Visual Basic) или Оператор AddHandler. Предложение Handles является способом объявления обработчика событий в Visual Basic по умолчанию. В этом способе обработчики событий пишутся разработчиками в интегрированной среде разработки. Оператор AddHandler подходит для динамического создания событий во время выполнения.
При возникновении события Visual Basic автоматически вызывает процедуру обработчика событий. Любой код, имеющий доступ к событию, может вызвать его выполнение с помощью Оператор RaiseEvent.
Можно связать несколько обработчиков событий с одним событием. В некоторых случаях можно отменить привязку обработчика к событию. Дополнительные сведения см. в разделе События (Visual Basic).
Вызов обработчика событий с помощью Handles и WithEvents
Убедитесь, что событие объявляется с помощью Оператор Event.
Объявите переменную объекта на уровне модуля или класса с помощью ключевого слова WithEvents (Visual Basic). С помощью предложения As для этой переменной нужно указать класс, который вызывает событие.
В объявлении процедуры обработки события Sub добавьте предложение Предложение Handles (Visual Basic), которое задает значение переменной WithEvents и имя события.
При возникновении события Visual Basic автоматически вызывает процедуру Sub. Код может использовать оператор RaiseEvent, чтобы создавать событие.
В следующем примере определяется событие и переменная WithEvents, которая ссылается на класс, который вызывает событие. Процедура обработки события Sub использует предложение Handles для указания класса и события, которые он обрабатывает.
Public Class raisesEvent Public Event somethingHappened() Dim WithEvents happenObj As New raisesEvent Public Sub processHappen() Handles happenObj.somethingHappened ' Insert code to handle somethingHappened event. End Sub End Class
Вызов обработчика событий с помощью AddHandler
Убедитесь, что событие объявлено с помощью оператора Event.
Выполните Оператор AddHandler для того, чтобы динамически связать процедуру обработки события Sub с событием.
При возникновении события Visual Basic автоматически вызывает процедуру Sub. Код может использовать оператор RaiseEvent, чтобы создавать событие.
В следующем примере определяется процедура Sub для обработки события формы Closing. Затем используется Оператор AddHandler, чтобы связать процедуру catchClose в качестве обработчика событий для Closing.
' Place these procedures inside a Form class definition. Private Sub catchClose(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) ' Insert code to deal with impending closure of this form. End Sub Public Sub formOpened() AddHandler Me.Closing, AddressOf catchClose End Sub
Можно отменить привязку обработчика к событию, выполнив Оператор RemoveHandler.
См. также
Задачи
Практическое руководство. Создание процедуры (Visual Basic)
Практическое руководство. Вызов процедуры, которая не возвращает значение (Visual Basic)
Ссылки
Оператор AddressOf (Visual Basic)