Příkaz RaiseEvent
Aktivační událost deklarovat na úrovni modul třídy, formulář nebo dokumentu.
RaiseEvent eventname[( argumentlist )]
Části
eventname
Povinné.Název události spustí.argumentlist
Nepovinné.Čárkami oddělený seznam proměnných, matice nebo výrazy.argumentlist Argument musí být uzavřena v závorkách.Pokud neexistují žádné argumenty, musí být závorky vynechat.
Poznámky
Požadované eventname je v modulu deklarována název události.Vyplývá vytváření názvů proměnných jazyka Visual Basic.
Událost nebyla deklarována v rámci modulu, ve kterém je aktivována, dojde k chybě.Následující fragment kódu ukazuje deklaraci události a postup, ve kterém je aktivována událost.
' Declare an event at module level.
Event LogonCompleted(ByVal UserName As String)
Sub Logon(ByVal UserName As String)
' Raise the event.
RaiseEvent LogonCompleted(UserName)
End Sub
Nelze použít RaiseEvent zvýšit události, které nejsou explicitně deklarovány v modulu.Například dědí všechny formuláře Click události z System.Windows.Forms.Form, není možné zvýšit pomocí RaiseEvent odvozené formuláře.Pokud deklarujete Click událostí v modulu formuláře jej stínů formuláře vlastní Click událostí.Ve formuláři můžete vyvolat stále Click událostí voláním OnClick metoda.
Události v jazyce Visual Basic standardně zvýší jeho obslužných rutin událostí v pořadí, aby byly stanoveny připojení.Protože události mohou mít ByRef parametry, proces, který spojuje pozdní obdržet parametry, které změnily dřívější obslužnou rutinu události.Po spuštění obslužné rutiny události, ovládací prvek se vrátí na podprogram, který vyvolal událost.
[!POZNÁMKA]
Nesdílené události by měl zvýšit v rámci konstruktoru třídy, které jsou deklarovány.Ačkoli takové události nesmí způsobit chyby, může být zachycen obslužné rutiny událostí přidružené selhání.Použití Shared modifikátor vytvoření sdílené události, pokud potřebujete zvýšit události z konstruktoru.
[!POZNÁMKA]
Můžete změnit výchozí chování události definováním vlastní události.Pro vlastní události RaiseEvent Vyvolá příkaz na událost RaiseEvent přístupový objekt.Další informace o vlastních událostí viz Výpis událostí.
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 včetně 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řít nový projekt aplikace systému Windows, 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 předchozí příklad spustit 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 Metody zpracování události stejným způsobem jako formuláře.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é
Referenční dokumentace
Klauzule Handles (Visual Basic)