Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az esemény olyan művelet vagy esemény – például egérkattintás vagy kreditkorlát túllépése –, amelyet egy programösszetevő felismer, és amelyre a válaszhoz kódot írhat. Az eseménykezelő az eseményre válaszoló kód.
A Visual Basicben két oldal áll rendelkezésre az események használatához:
- Események közzététele – Az osztályok eseményeket deklarálnak, és amikor valami érdekes történik, a RaiseEvent utasítást használják. Ez hívja meg az eseménykezelőket.
-
Esemény-előfizetés – Az eseményekre úgy iratkozhat fel, hogy azonosítja az adott események kezelőinek eljárásait. Ezt egy záradékkal és egy
HandlesváltozóvalWithEvents, vagy egy AddHandler utasítással teheti meg.
A Visual Basic eseménykezelője egy Sub eljárás. A kód nem hívja meg közvetlenül a hívást, mint más eljárások esetében. Az esemény közzétevői az eljárást az esemény bekövetkeztekor hívják meg, mivel az eljárás fel van iratkozva az eseményre.
Handles A záradék használata az alapértelmezett módja az eseményekre való feliratkozásnak a Visual Basicben. Az eseménykezelőket így írják meg a tervezők, amikor az integrált fejlesztési környezetben (IDE) programoznak. Az AddHandler utasítás alkalmas az eseményekre való dinamikus feliratkozásra futási időben.
Az esemény bekövetkezésekor a Visual Basic automatikusan meghívja az eseménykezelő eljárást. Az eseményhez hozzáféréssel rendelkező kódok egy RaiseEvent utasítás végrehajtásával okozhatják azt.
Több eseménykezelőt is társíthat ugyanahhoz az eseményhez. Bizonyos esetekben egy kezelőt leválaszthat egy eseményről. További információ: Események.
Feliratkozás egy eseményre a következővel Handles : WithEvents
Győződjön meg arról, hogy az esemény eseménykimutatással van deklarálva.
Deklarálhat egy objektumváltozót modul- vagy osztályszinten a
WithEventskulcsszó használatával. AAsváltozó záradékának meg kell adnia az eseményt váltó osztályt.Az eseménykezelési
Subeljárás deklarációjában adjon hozzá egyHandleszáradékot, amely megadja a változótWithEventsés az esemény nevét.Az esemény bekövetkezésekor a Visual Basic automatikusan meghívja az
Subeljárást. A kód egy utasítássalRaiseEventindíthatja el az eseményt, és meghívhatja az összes előfizetett kezelőt.Az alábbi példa egy eseményt és egy változót
WithEventshatároz meg, amely az eseményt váltó osztályra hivatkozik. Az eseménykezelésiSubeljárás záradékkalHandleshatározza meg az általa kezelt osztályt és eseményt.' 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
Feliratkozás eseményre az AddHandler használatával
Győződjön meg arról, hogy az esemény egy utasítással
Eventvan deklarálva.Egy AddHandler-utasítás végrehajtásával dinamikusan csatlakoztathatja az eseménykezelési
Subeljárást az eseményhez.Az esemény bekövetkezésekor a Visual Basic automatikusan meghívja az
Subeljárást. A kód egy utasítássalRaiseEventindíthatja el az eseményt, és meghívhatja az összes előfizetett kezelőt.Az alábbi példa a konstruktor AddHandler utasításával társítja az
OnTimerElapsedeljárást eseménykezelőként egy egyéni időzítőeseményhez.' 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 ClassAz eseménykezelőt leválaszthatja egy eseményről a RemoveHandler utasítás végrehajtásával.