Sdílet prostřednictvím


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

Výpis událostí

Příkaz AddHandler

Prohlášení RemoveHandler

Klauzule Handles (Visual Basic)

Další zdroje

Události (Visual Basic)