Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En händelse är en åtgärd eller förekomst – till exempel en musklickning eller en kreditgräns som överskrids – som identifieras av någon programkomponent och som du kan skriva kod för att svara på. En händelsehanterare är den kod som du skriver för att svara på en händelse.
I Visual Basic finns det två sidor för att arbeta med händelser:
- Händelsepublicering – Klasser deklarerar händelser och genererar dem när något intressant händer med hjälp av RaiseEvent-instruktionen. Det här är vad som faktiskt anropar händelsehanterarna.
-
Händelseprenumeration – Du prenumererar på händelser genom att identifiera procedurer som hanterare för specifika händelser. Du kan göra detta antingen med en
Handlessats och enWithEventsvariabel eller med en AddHandler-instruktion.
En händelsehanterare i Visual Basic är en Sub procedur. Din kod anropar den ej direkt, såsom andra Sub funktioner. I stället anropar händelseutgivare proceduren när händelsen utlöses eftersom proceduren är registrerad för händelsen.
Att använda en Handles sats är standardsättet för att prenumerera på händelser i Visual Basic. Det är så händelsehanterare skapas av designers när du programmerar i en integrerad utvecklingsmiljö (IDE). Instruktionen AddHandler är lämplig för att prenumerera på händelser dynamiskt vid körning.
När händelsen inträffar anropar Visual Basic automatiskt händelsehanterarproceduren. All kod som har åtkomst till händelsen kan orsaka att den inträffar genom att köra en RaiseEvent-instruktion.
Du kan associera mer än en händelsehanterare med samma händelse. I vissa fall kan du koppla bort en hanterare från en händelse. Mer information finns i Händelser.
Prenumerera på en händelse med Handles och WithEvents
Kontrollera att händelsen har deklarerats med en händelsedeklaration.
Deklarera en objektvariabel på modul- eller klassnivå med hjälp av nyckelordet
WithEvents.AsSatsen för den här variabeln måste ange den klass som genererar händelsen.I deklarationen av händelsehanteringsproceduren
Sublägger du till enHandlessats som anger variabelnWithEventsoch händelsenamnet.När händelsen inträffar anropar Visual Basic automatiskt proceduren
Sub. Koden kan använda enRaiseEventinstruktion för att skapa händelsen och anropa alla hanterare som prenumererar.I följande exempel definieras en händelse och en
WithEventsvariabel som refererar till klassen som genererar händelsen. HändelsehanteringsprocedurenSubanvänder enHandlessats för att ange vilken klass och händelse den hanterar.' 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
Prenumerera på en händelse med Hjälp av AddHandler
Kontrollera att händelsen har deklarerats med en
Event-instruktion.Kör en AddHandler-instruktion för att dynamiskt ansluta händelsehanteringsproceduren
Subtill händelsen.När händelsen inträffar anropar Visual Basic automatiskt proceduren
Sub. Koden kan använda enRaiseEventinstruktion för att skapa händelsen och anropa alla hanterare som prenumererar.I följande exempel används AddHandler-instruktionen i konstruktorn för att associera proceduren
OnTimerElapsedsom händelsehanterare för en anpassad timerhändelse.' 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 ClassDu kan koppla bort en händelsehanterare från en händelse genom att köra RemoveHandler-instruktionen.