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


Оператор 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

Ссылки

Handles

WithEvents

Оператор AddHandler