Оператор WithEvents и предложение Clause
Обновлен: Ноябрь 2007
Оператор WithEvents и предложение Handles предоставляют декларативный способ задания обработчиков событий. Событие, инициированное объектом, который объявлен с помощью ключевого слова WithEvents, могут обрабатываться любой процедурой с оператором Handles для данного события, как показано в следующем примере:
' Declare a WithEvents variable.
Dim WithEvents EClass As New EventClass
' Call the method that raises the object's events.
Sub TestEvents()
EClass.RaiseEvents()
End Sub
' Declare an event handler that handles multiple events.
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
MsgBox("Received Event.")
End Sub
Class EventClass
Public Event XEvent()
Public Event YEvent()
' RaiseEvents raises both events.
Sub RaiseEvents()
RaiseEvent XEvent()
RaiseEvent YEvent()
End Sub
End Class
Применение оператора WithEvents и предложения Handles часто является лучшим вариантом для обработчиков событий, поскольку используемый ими декларативный синтаксис делает обработку события проще для кодирования, чтения и отладки. Однако при использовании переменных WithEvents необходимо помнить о следующих ограничениях:
Нельзя использовать переменную WithEvents как объектную переменную. То есть ее невозможно объявить как Object — при объявлении переменной необходимо указать имя класса.
Поскольку общие событияне связаны с экземплярами класса, нельзя использовать WithEvents для декларативно обрабатываемых общих событий. Нельзя также использовать WithEvents или Handles для обработки событий из Structure. В обоих случаях для обработки этих событий можно использовать оператор AddHandler.
Невозможно создать массивы переменных WithEvents.
Переменные WithEvents позволяют одному обработчику событий обрабатывать один или несколько видов событий или нескольким обработчикам событий обрабатывать один вид событий.
См. также
Основные понятия
Операторы AddHandler и RemoveHandler