Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Událost je akce nebo výskyt , například kliknutí myší nebo překročení limitu kreditu – rozpoznaný nějakou komponentou programu a pro který můžete napsat kód, který má reagovat. Obslužná rutina události je kód, který napíšete pro reakci na událost.
V jazyce Visual Basic existují dvě strany pro práci s událostmi:
- Publikování událostí – Třídy deklarují události a vyvolávají je, když se pomocí příkazu RaiseEvent něco zajímavého stane. To je to, co skutečně vyvolává (volá) obslužné rutiny událostí.
-
Odběr událostí – Události se přihlásíte k odběru tím, že identifikujete procedury jako obslužné rutiny pro konkrétní události. Můžete to provést buď pomocí
Handlesklauzule aWithEventsproměnné, nebo pomocí příkazu AddHandler.
Obslužná rutina události v jazyce Visual Basic je procedura Sub . Kód ho nevolá přímo jako jiné Sub procedury. Místo toho vydavatelé událostí vyvolají proceduru, když je událost vyvolána, protože procedura je přihlášena k odběru události.
Handles Použití klauzule je výchozím způsobem přihlášení k odběru událostí v jazyce Visual Basic. To je způsob, jakým návrháři zapisují obslužné rutiny událostí, když programujete v integrovaném vývojovém prostředí (IDE). Příkaz AddHandler je vhodný pro dynamické přihlášení k odběru událostí za běhu.
Když dojde k události, Visual Basic automaticky volá proceduru pro obsluhu události. Jakýkoli kód, který má přístup k události, může způsobit jeho výskyt spuštěním příkazu RaiseEvent.
Ke stejné události můžete přiřadit více obslužných rutin události. V některých případech můžete zrušit přidružení obslužné rutiny k události. Další informace naleznete v části Události .
Přihlášení k odběru události pomocí Handles a WithEvents
Ujistěte se, že je událost deklarována příkazem Event Statement.
Deklarujte proměnnou objektu na úrovni modulu nebo třídy pomocí klíčového
WithEventsslova. KlauzuleAspro tuto proměnnou musí určovat třídu, která vyvolá událost.Do deklarace procedury zpracování
Subudálostí přidejteHandlesklauzuli, která určujeWithEventsproměnnou a název události.Když dojde k události, Visual Basic automaticky volá proceduru
Sub. Váš kód může použítRaiseEventpříkaz k vyvolání události a vyvolání všech odebíraných obslužných rutin.Následující příklad definuje událost a proměnnou
WithEvents, která odkazuje na třídu, která vyvolá událost. Procedura zpracováníSubudálostí používáHandlesklauzuli k určení třídy a události, které zpracovává.' 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
Přihlášení k odběru události pomocí AddHandler
Ujistěte se, že je událost deklarována příkazem
Event.Spuštěním příkazu AddHandler dynamicky propojíte proceduru zpracování
Subudálostí s událostí.Když dojde k události, Visual Basic automaticky volá proceduru
Sub. Váš kód může použítRaiseEventpříkaz k vyvolání události a vyvolání všech odebíraných obslužných rutin.Následující příklad používá AddHandler příkaz v konstruktoru přidružit proceduru
OnTimerElapsedjako obslužnou rutinu události pro vlastní událost časovače.' 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 ClassObslužnou rutinu události můžete zrušit spuštěním příkazu RemoveHandler.