Výpis událostí
Deklaruje k události definované uživatelem.
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname[(parameterlist)] _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname As delegatename _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Custom Event eventname As delegatename _
[ Implements implementslist ]
[ <attrlist> ] AddHandler(ByVal value As delegatename)
[ statements ]
End AddHandler
[ <attrlist> ] RemoveHandler(ByVal value As delegatename)
[ statements ]
End RemoveHandler
[ <attrlist> ] RaiseEvent(delegatesignature)
[ statements ]
End RaiseEvent
End Event
Části
Část |
Description |
attrlist |
Nepovinné.Seznam atributů, které se vztahují k této události.Více atributů jsou odděleny čárkami.Je nutné uzavřít Seznam atributů (Visual Basic) v lomených závorkách ("<"a">"). |
accessmodifier |
Nepovinné.Určuje, jaký kód má přístup k události.Může být jeden z následujících:
Můžete určit Protected Friend přístup z kódu třídy události, odvozené třídy nebo stejné sestavení. |
Shared |
Nepovinné.Určuje, že tato událost není spojena s konkrétní instanci třídy nebo struktury. |
Shadows |
Nepovinné.Označuje, že tato událost redeclares a skryje identicky pojmenované programovací element nebo sada přetížené prvků v základní třídě.Vytvořit stínovou kopii jakéhokoli druhu prohlášené prvku s jiným typem. Stínovaný prvek je k dispozici v rámci odvozené třídy, stínů, s výjimkou z kde stínového provozu prvku je nepřístupné.Například pokud Private prvek stínů prvku základní třída kódu, který nemá oprávnění k přístupu Private prvku místo přistupuje prvek třídy base. |
eventname |
Povinné.Název události; Následuje standardní konvence proměnné. |
parameterlist |
Nepovinné.Seznam místních proměnných, které představují parametry této události.Je nutné uzavřít Seznam parametrů (Visual Basic) v závorkách. |
Implements |
Nepovinné.Označuje, že tato událost implementuje rozhraní události. |
implementslist |
Vyžadován, pokud Implements se dodává.Seznam Sub postupy, které jsou implementovány.Více postupy jsou odděleny čárkami: implementedprocedure [, implementedprocedure ...] Každý implementedprocedure má následující syntaxi a částí: interface.definedname
ČástDescription
interface Povinné.Název rozhraní, třídy nebo struktury obsahující tento postup je implementace.
definedname Povinné.Název, kterým je definována postupem v interface.To nemusí být stejné jako name, název, který pomocí tohoto postupu implementace definovaných postupem.
|
Custom |
Povinné.Události deklarované jako Custom nutné definovat vlastní AddHandler, RemoveHandler, a RaiseEvent přístupové objekty. |
delegatename |
Nepovinné.Jméno delegáta, Určuje podpis obslužnou rutinu události. |
AddHandler |
Povinné.Prohlašuje, AddHandler přístupový objekt, který určuje příkazy spustit při zpracování události přidání explicitně prostřednictvím AddHandler prohlášení nebo implicitně pomocí Handles klauzule. |
End AddHandler |
Povinné.Ukončí AddHandler bloku. |
value |
Povinné.Název parametru. |
RemoveHandler |
Povinné.Deklaruje RemoveHandler přístupový objekt určuje příkazy spustit při zpracování události odebrání pomocí RemoveHandler prohlášení. |
End RemoveHandler |
Povinné.Ukončí RemoveHandler bloku. |
RaiseEvent |
Povinné.Deklaruje RaiseEvent přístupový objekt určuje příkazy spustit při, událost je aktivována pomocí RaiseEvent prohlášení.Obvykle to vyvolá seznam udržovaný Delegáti AddHandler a RemoveHandler přístupové objekty. |
End RaiseEvent |
Povinné.Ukončí RaiseEvent bloku. |
delegatesignature |
Povinné.Seznam parametrů, který odpovídá požadované parametry delegatename delegovat.Je nutné uzavřít Seznam parametrů (Visual Basic) v závorkách. |
statements |
Nepovinné.Příkazy, které obsahují orgánů AddHandler, RemoveHandler, a RaiseEvent metod. |
End Event |
Povinné.Ukončí Event bloku. |
Poznámky
Po události nebyl deklarován, použít RaiseEvent příkaz zvýšit události.Typické události může být deklarována a aktivovaná, jak je uvedeno v následující části:
Public Class EventSource
' Declare an event.
Public Event LogonCompleted(ByVal UserName As String)
Sub CauseEvent()
' Raise an event on successful logon.
RaiseEvent LogonCompleted("AustinSteele")
End Sub
End Class
[!POZNÁMKA]
Argumenty událostí můžete deklarovat, stejně jako argumenty procedury s následujícími výjimkami: události nelze pojmenované argumenty, ParamArray argumenty, nebo Optional argumenty.Události nemají návratové hodnoty.
Zpracování události, musíte spojit jej s podprogram obslužné rutiny událostí, pomocí Handles nebo AddHandler prohlášení.Podpisy podprogram a událost se musí shodovat.Zpracování sdílené událostí, musíte použít AddHandler prohlášení.
Můžete použít Event pouze na úrovni modulu.To znamená prohlášení kontextu události musí být třída, struktura, modulu nebo rozhraní a nemůže být zdrojový soubor, obor názvů, postup nebo bloku.Další informace naleznete v tématu Prohlášení kontextů a úrovně přístupu výchozí (Visual Basic).
Ve většině případů můžete použít první syntaxe v části tohoto tématu Syntaxe pro deklaraci události.Některé scénáře však vyžadují, že máte větší kontrolu nad podrobné chování události.Poslední syntaxe v tématu, který se používá v části Syntaxe Custom klíčové slovo, poskytuje tento ovládací prvek umožňuje definovat vlastní události.Vlastní události zadat přesně co se stane, když kód přidá nebo odebere obslužné rutiny události do nebo z události nebo kdy kód vyvolá událost.Příklady naleznete v tématech Jak: deklarovat vlastní události šetřit paměť (Visual Basic) a Jak: deklarovat vlastní události zabránit zablokování (Visual Basic).
Příklad
Následující příklad používá události pro počítání dolů sekund 10 0.Kód ukazuje několik událost související metody, vlastnosti a příkazy.To zahrnuje RaiseEvent prohlášení.
Třída, která aktivuje událost je zdroj události a metody zpracování události jsou obslužné rutiny událostí.Zdroj události můžete mít více obslužné rutiny událostí, které generuje.Pokud třída vyvolá událost, že událost je aktivována na každé třídy, který se rozhodl zpracování událostí pro instanci objektu.
V příkladu se rovněž používá formulář (Form1) s tlačítkem (Button1) a textové pole (TextBox1).Po klepnutí tlačítko zobrazí první textové pole odpočítávání od 10 do 0 sekund.Po celé času (10 sekund), zobrazí první textové pole "Hotovo".
Kód pro Form1 Určuje počáteční a koncová státy formuláře.Obsahuje také při události jsou zaznamenávány spuštěn kód.
Chcete-li použít tento příklad otevřete nový projekt model Windows Forms.Poté přidat tlačítko s názvem Button1 a textové pole s názvem TextBox1 hlavní formulář s názvem Form1.Klepněte pravým tlačítkem myši na formulář a klepněte na tlačítko Zobrazení kódu otevřete editor kódu.
Přidat WithEvents proměnné do deklarační sekce Form1 třídy:
Private WithEvents mText As TimerState
Přidejte následující kód na kód Form1.Nahradit duplicitní postupy, které mohou existovat jako Form_Load nebo Button_Click.
Private Sub Form1_Load() Handles MyBase.Load
Button1.Text = "Start"
mText = New TimerState
End Sub
Private Sub Button1_Click() Handles Button1.Click
mText.StartCountdown(10.0, 0.1)
End Sub
Private Sub mText_ChangeText() Handles mText.Finished
TextBox1.Text = "Done"
End Sub
Private Sub mText_UpdateTime(ByVal Countdown As Double
) Handles mText.UpdateTime
TextBox1.Text = Format(Countdown, "##0.0")
' Use DoEvents to allow the display to refresh.
My.Application.DoEvents()
End Sub
Class TimerState
Public Event UpdateTime(ByVal Countdown As Double)
Public Event Finished()
Public Sub StartCountdown(ByVal Duration As Double,
ByVal Increment As Double)
Dim Start As Double = DateAndTime.Timer
Dim ElapsedTime As Double = 0
Dim SoFar As Double = 0
Do While ElapsedTime < Duration
If ElapsedTime > SoFar + Increment Then
SoFar += Increment
RaiseEvent UpdateTime(Duration - SoFar)
End If
ElapsedTime = DateAndTime.Timer - Start
Loop
RaiseEvent Finished()
End Sub
End Class
Stisknutím klávesy F5 spustit předchozí příklad a klepněte na tlačítko Start.První textové pole začne počítat dolů sekundy.Po celé času (10 sekund), zobrazí první textové pole "Hotovo".
[!POZNÁMKA]
My.Application.DoEvents Metoda zpracovat události formuláře se stejným způsobem.Chcete-li formulář pro zpracování událostí přímo, můžete použít s více podprocesy.Další informace naleznete v tématu Zřetězení (C# a Visual Basic).
Viz také
Úkoly
Jak: deklarovat vlastní události šetřit paměť (Visual Basic)
Jak: deklarovat vlastní události zabránit zablokování (Visual Basic)
Referenční dokumentace
Klauzule Handles (Visual Basic)