Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Событие — это действие или происшествие, например, щелчок мыши или превышение кредитного лимита, которое распознается некоторыми компонентами программы, и для которых можно написать ответный код. Обработчик событий — это код, который вы пишете для реагирования на событие.
Существует две стороны при работе с событиями в Visual Basic.
- Публикация событий — классы объявляют события и вызывают их, когда происходит что-то интересное с помощью инструкции RaiseEvent. Это то, что фактически вызывает (вызывает) обработчики событий.
-
Подписка на события— вы подписываетесь на события, определяя процедуры как обработчики для определенных событий. Это можно сделать с предложением
Handlesи переменнойWithEventsили с помощью инструкции AddHandler.
Обработчик событий в Visual Basic — это Sub процедура. Код не вызывает его напрямую, как и другие Sub процедуры. Вместо этого издатели событий вызывают процедуру при возникновении события, так как процедура подписана на событие.
По умолчанию, клаузу Handles использовать - это стандартный способ подписки на события в Visual Basic. Это то, как обработчики событий записываются разработчиками при программировании в интегрированной среде разработки (IDE). Инструкция AddHandler подходит для подписки на события динамически во время выполнения.
При возникновении события Visual Basic автоматически вызывает процедуру обработчика событий. Любой код, имеющий доступ к событию, может привести к его возникновению путем выполнения инструкции RaiseEvent.
С одним и тем же событием можно связать несколько обработчиков событий. В некоторых случаях можно отвязать обработчик от события. Для получения дополнительной информации см. в событиях .
Подписка на событие с помощью Handles и WithEvents
Убедитесь, что событие объявлено с помощью оператора Event.
Объявите переменную объекта на уровне модуля или класса с помощью ключевого
WithEventsслова. ПредложениеAsдля этой переменной должно указывать класс, который вызывает событие.В объявлении процедуры обработки
Subсобытий добавьтеHandlesпредложение, указывающееWithEventsпеременную и имя события.При возникновении события Visual Basic автоматически вызывает процедуру
Sub. Код может использовать инструкциюRaiseEventдля вызова события и вызова всех подписанных обработчиков.В следующем примере определяется событие и
WithEventsпеременная, ссылающаяся на класс, который вызывает событие. Процедура обработкиSubсобытий используетHandlesпредложение, чтобы указать класс и событие, которые она обрабатывает.' Example showing event handling with Handles and WithEvents Public Class EventPublisher Public Event SomethingHappened() Public Sub CauseEvent() ' Raise the event when something interesting happens RaiseEvent SomethingHappened() End Sub End Class Public Class EventSubscriber ' Declare a WithEvents variable Dim WithEvents eventObj As New EventPublisher ' Handle the event using Handles clause Public Sub ProcessHappen() Handles eventObj.SomethingHappened ' Insert code to handle somethingHappened event. Console.WriteLine("Event handled using Handles clause!") End Sub Public Sub TriggerEvent() eventObj.CauseEvent() End Sub End Class
Подписка на событие с помощью AddHandler
Убедитесь, что событие объявлено с помощью инструкции
Event.Выполните инструкцию AddHandler , чтобы динамически подключить процедуру обработки
Subсобытий к событию.При возникновении события Visual Basic автоматически вызывает процедуру
Sub. Код может использовать инструкциюRaiseEventдля вызова события и вызова всех подписанных обработчиков.В следующем примере оператор AddHandler в конструкторе используется для связывания
OnTimerElapsedпроцедуры в качестве обработчика событий для пользовательского события таймера.' Example showing event handling with AddHandler Public Class Timer Public Event TimerElapsed(ByVal message As String) Public Sub Start() ' Simulate timer elapsed RaiseEvent TimerElapsed("Timer has elapsed!") End Sub End Class Public Class Application Private appTimer As New Timer() Sub New() ' Use AddHandler to dynamically associate event handler AddHandler appTimer.TimerElapsed, AddressOf OnTimerElapsed End Sub Private Sub OnTimerElapsed(ByVal message As String) ' Insert code to handle timer elapsed event Console.WriteLine($"Handling timer event: {message}") End Sub Public Sub StartTimer() appTimer.Start() End Sub End ClassВы можете отключить обработчик событий от события, выполнив инструкцию RemoveHandler.