Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een gebeurtenis is een actie of gebeurtenis, zoals een muisklik of een tegoedlimiet overschreden, die wordt herkend door een programmaonderdeel en waarvoor u code kunt schrijven om te reageren. Een gebeurtenis-handler is de code die u schrijft om te reageren op een gebeurtenis.
In Visual Basic zijn er twee kanten aan het werken met gebeurtenissen:
- Gebeurtenispublicatie : klassen declareren gebeurtenissen en genereren deze wanneer er iets interessants gebeurt met behulp van de RaiseEvent-instructie. Dit is wat de event handlers daadwerkelijk aanroept.
-
Gebeurtenisabonnement : u abonneert u op gebeurtenissen door procedures te identificeren als handlers voor specifieke gebeurtenissen. U kunt dit doen met een
Handlescomponent en eenWithEventsvariabele, of met een AddHandler-instructie.
Een gebeurtenis-handler in Visual Basic is een Sub procedure. Uw code roept deze niet rechtstreeks aan zoals andere Sub procedures. In plaats daarvan roepen gebeurtenisuitgevers de procedure aan wanneer de gebeurtenis wordt gegenereerd omdat de procedure is geabonneerd op de gebeurtenis.
Het gebruik van een Handles component is de standaard manier om u te abonneren op gebeurtenissen in Visual Basic. Zo worden evenementhandlers door de ontwerpers geschreven wanneer u in de geïntegreerde ontwikkelomgeving (IDE) programmeert. De AddHandler instructie is geschikt voor het dynamisch abonneren op gebeurtenissen tijdens runtime.
Wanneer de gebeurtenis plaatsvindt, roept Visual Basic automatisch de procedure voor de gebeurtenis-handler aan. Elke code die toegang heeft tot de gebeurtenis kan ertoe leiden dat deze zich voordoet door een RaiseEvent-instructie uit te voeren.
U kunt meer dan één gebeurtenishandler koppelen aan dezelfde gebeurtenis. In sommige gevallen kunt u een handler loskoppelen van een gebeurtenis. Zie Gebeurtenissenvoor meer informatie.
Abonneren op een gebeurtenis met behulp van Handles en WithEvents
Zorg ervoor dat de gebeurtenis is gedeclareerd met een gebeurtenisinstructie.
Declareer een objectvariabele op module- of klasseniveau met behulp van het
WithEventstrefwoord. DeAscomponent voor deze variabele moet de klasse opgeven die de gebeurtenis genereert.Voeg in de declaratie van de procedure voor gebeurtenisafhandeling
SubeenHandlescomponent toe waarmee deWithEventsvariabele en de gebeurtenisnaam worden opgegeven.Wanneer de gebeurtenis plaatsvindt, roept Visual Basic de
Subprocedure automatisch aan. Uw code kan eenRaiseEventinstructie gebruiken om de gebeurtenis te genereren en alle geabonneerde handlers aan te roepen.In het volgende voorbeeld worden een gebeurtenis en een
WithEventsvariabele gedefinieerd die verwijst naar de klasse die de gebeurtenis genereert. De procedure voor gebeurtenisafhandelingSubmaakt gebruik van eenHandlescomponent om de klasse en gebeurtenis op te geven die worden verwerkt.' 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
Abonneren op een gebeurtenis met AddHandler
Zorg ervoor dat het event is gedefinieerd met een
Eventinstructie.Voer een AddHandler-instructie uit om de procedure voor gebeurtenisafhandeling
Subdynamisch te verbinden met de gebeurtenis.Wanneer de gebeurtenis plaatsvindt, roept Visual Basic de
Subprocedure automatisch aan. Uw code kan eenRaiseEventinstructie gebruiken om de gebeurtenis te genereren en alle geabonneerde handlers aan te roepen.In het volgende voorbeeld wordt de Instructie AddHandler in de constructor gebruikt om de
OnTimerElapsedprocedure te koppelen als een gebeurtenis-handler voor een aangepaste timer-gebeurtenis.' 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 ClassU kunt een gebeurtenishandler loskoppelen van een gebeurtenis door de RemoveHandler-instructie uit te voeren.