Sdílet prostřednictvím


Event – příkaz

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:

  • Veřejné– přístup k prvku, který prohlašuje, že kód přístup.

  • Chráněné– pouze kód v rámci své třídy nebo odvozené třídy můžete získat přístup.

  • Přítel– pouze kód ve stejném sestavení přístup.

  • Soukromé– pouze kód v prvku, který prohlašuje, že můžete získat přístup.

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

Část

Description

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 Kontexty deklarace a výchozí úrovně přístupu (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 Postupy: Deklarování vlastních událostí pro konzervaci paměti (Visual Basic) a Postupy: Deklarování vlastních událostí k zabránění bloková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 Dělení na vlákna (C# and Visual Basic).

Viz také

Úkoly

Postupy: Deklarování vlastních událostí pro konzervaci paměti (Visual Basic)

Postupy: Deklarování vlastních událostí k zabránění blokování (Visual Basic)

Referenční dokumentace

RaiseEvent – příkaz

Implements – Příkaz

AddHandler – příkaz

RemoveHandler – příkaz

Handles – Klauzule (Visual Basic)

Delegate – příkaz

Shared (Visual Basic)

Shadows (Visual Basic)

Další zdroje

Události (Visual Basic)