Event — Instrukcja

Deklaruje zdarzenia zdefiniowane przez użytkownika.

[ <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

Części

Część

Opis

attrlist

Opcjonalne.Lista atrybutów, które stosuje się do tego zdarzenia.Wiele atrybutów są oddzielone przecinkami.Należy ująć Lista atrybutów (Visual Basic) w nawiasy ostre ("<"i">").

accessmodifier

Opcjonalne.Określa, jakiego można uzyskać dostęp do zdarzenia.Może mieć jedną z następujących czynności:

  • Publiczne— każdy kod, który można uzyskać dostęp do elementu, który jest ona deklarowana do niego dostęp.

  • Chronione— tylko kod w ramach swojej klasy lub klasy pochodnej można do niego dostęp.

  • Przyjaciel— tylko kod w tym samym zestawie do niego dostęp.

  • Prywatne— tylko kod w element, do którego jest ona deklarowana do niego dostęp.

Można określić Protected Friend aby umożliwić dostęp z kodu klasy event, Klasa pochodna lub tego samego zestawu.

Shared

Opcjonalne.Określa, że to zdarzenie nie jest skojarzony z konkretnego wystąpienia klasy lub struktury.

Shadows

Opcjonalne.Wskazuje, że to zdarzenie redeclares i ukrywa element programowania o identycznej nazwie, lub zestaw elementów przeciążony, w klasie podstawowej.Można cień wszelkiego rodzaju deklarowanych elementu z innego rodzaju.

Element cieniem jest niedostępne w klasie pochodnej, która cieni, z wyjątkiem, od których przesłaniania element jest niedostępny.Na przykład jeśli Private element cieni element klasy base, kod, który nie ma uprawnień dostępu do Private elementu zamiast uzyskuje dostęp do elementu klasa bazowa.

eventname

Wymagane.Nazwa zdarzenia; następuje standardowymi konwencjami nazewnictwa zmiennych.

parameterlist

Opcjonalne.Lista zmiennych lokalnych, które reprezentują parametry tego zdarzenia.Należy ująć Lista parametrów (Visual Basic) w nawiasach.

Implements

Opcjonalne.Wskazuje, że to zdarzenie implementuje zdarzenia interfejsu.

implementslist

Wymagany, jeżeli Implements jest dostarczany.Lista Sub procedur realizowane.Wiele procedur są oddzielone przecinkami:

implementedprocedure [, implementedprocedure ...]

Każdy implementedprocedure ma następującą składnię i części:

interface.definedname

Część

Opis

interface

Wymagane.Nazwa interfejsu, że procedura ta zawierający klasy lub struktury jest wykonawczych.

definedname

Wymagane.Nazwa, przez który procedury jest zdefiniowany w interface.Nie ma być taka sama, jak name, nazwę, która używa tej procedury do wprowadzenia procedury zdefiniowane.

Custom

Wymagane.Zdarzenia deklarowane jako Custom należy zdefiniować niestandardowy AddHandler, RemoveHandler, i RaiseEvent akcesorów.

delegatename

Opcjonalne.Nazwa pełnomocnika, który określa podpis obsługi zdarzeń.

AddHandler

Wymagane.Oświadcza, AddHandler akcesora, który określa instrukcji do wykonania po dodaniu programu obsługi zdarzeń, albo jawnie przy użyciu AddHandler instrukcji lub niejawnie, przy użyciu Handles klauzuli.

End AddHandler

Wymagane.Kończy działanie AddHandler bloku.

value

Wymagane.Nazwa parametru.

RemoveHandler

Wymagane.Oświadcza, RemoveHandler akcesora, który określa instrukcji do wykonania po usunięciu programu obsługi zdarzeń przy użyciu RemoveHandler instrukcji.

End RemoveHandler

Wymagane.Kończy działanie RemoveHandler bloku.

RaiseEvent

Wymagane.Oświadcza, RaiseEvent akcesora, który określa instrukcji do wykonania, gdy zdarzenie jest wywoływane za pomocą RaiseEvent instrukcji.Zwykle wywołuje listy obiektów delegowanych utrzymywane przez AddHandler i RemoveHandler akcesorów.

End RaiseEvent

Wymagane.Kończy działanie RaiseEvent bloku.

delegatesignature

Wymagane.Listę parametrów, który odpowiada parametrów wymaganych przez delegatename delegować.Należy ująć Lista parametrów (Visual Basic) w nawiasach.

statements

Opcjonalne.Sprawozdania, które zawierają organów AddHandler, RemoveHandler, i RaiseEvent metody.

End Event

Wymagane.Kończy działanie Event bloku.

Uwagi

Kiedy zdarzenie zostało zgłoszone, należy użyć RaiseEvent instrukcji, aby podnieść zdarzenia.Typowe zdarzeń może być zgłoszone i podniesiona, jak pokazano w następujących fragmentów:

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

[!UWAGA]

Można zadeklarować argumentów zdarzeń, tak samo, jak argumenty procedur, z następującymi wyjątkami: zdarzenia nie nazwane argumenty, ParamArray argumentów lub Optional argumentów.Zdarzenia nie mają wartości zwracanych.

Aby obsługiwać zdarzenie, musisz skojarzyć go z podprogram obsługi zdarzeń, za pomocą Handles lub AddHandler instrukcji.Podpisy podprocedurę i zdarzenia musi być zgodna.Aby obsłużyć zdarzenia udostępnionych, należy użyć AddHandler instrukcji.

Można użyć Event tylko na poziomie modułu.Oznacza to, kontekście deklaracji dla zdarzenia musi być klasy, struktury, moduł lub interfejsu i nie może być plik źródłowy, obszar nazw, procedury lub bloku.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).

W większości przypadków można użyć pierwszej składni w sekcji Składnia w tym temacie dla zgłaszania zdarzeń.Jednak kilka scenariuszy, wymagają, że masz większą kontrolę nad zachowaniem szczegółowe zdarzenia.Ostatni składni w sekcji tego tematu, który używa składni Custom słowa kluczowego, zawiera formant poprzez umożliwienie definiowania niestandardowych zdarzeń.W przypadku niestandardowych określić dokładnie to, co się dzieje, gdy kod dodaje lub usuwa obsługi zdarzeń lub zdarzenia, lub gdy kod wywołuje zdarzenie.Przykłady, zobacz Porady: deklarowanie zdarzeń niestandardowych w celu zachowywania pamięci (Visual Basic) i Porady: deklarowanie zdarzeń niestandardowych w celu unikania blokowania (Visual Basic).

Przykład

Poniższy przykład używa zdarzenia do odliczany czas sekund od 10 do 0.Kod ilustruje szereg zdarzeń związanych z metod, właściwości i instrukcje.Obejmuje to RaiseEvent instrukcji.

Klasa, która wywołuje zdarzenie jest źródłem zdarzeń i metod, które przetwarzają zdarzenia są programy obsługi zdarzeń.Źródło zdarzeń mogą mieć procedury obsługi wielu zdarzeń, który generuje.Gdy klasa wywołuje zdarzenie, że zdarzenie jest wywoływane na każdej klasy, który został wybrany do obsługi zdarzeń dla tego wystąpienia obiektu.

W przykładzie użyto również formularz (Form1) z przycisku (Button1) i pole tekstowe (TextBox1).Po kliknięciu przycisku, pierwsze pole tekstowe Wyświetla odliczanie od 10 do 0 sekund.Po upływie czasu pełnego (10 sekund), pierwsze pole tekstowe Wyświetla "Gotowe".

Kod Form1 określa Państwa początkowych i końcowych w formularzu.Zawiera ono również kod wykonywany, gdy są wywoływane zdarzenia.

Aby wykorzystać ten przykład, należy otworzyć nowy projekt Windows Forms.Następnie dodać przycisk o nazwie Button1 i pola tekstowego o nazwie TextBox1 do głównego formularza o nazwie Form1.Następnie kliknij prawym przyciskiem myszy formularz i kliknij przycisk Widok Kod , aby otworzyć Edytor kodu.

Dodaj WithEvents zmienna w sekcji deklaracji Form1 klasy:

Private WithEvents mText As TimerState

Dodaj następujący kod do kodu Form1.Zamień duplikaty procedur, które mogą istnieć, takich jak Form_Load lub 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

Naciśnij klawisz F5, aby uruchomić z poprzedniego przykładu, a następnie kliknij przycisk z etykietą uruchomić.Pierwsze pole tekstowe rozpoczyna odliczanie sekund.Po upływie czasu pełnego (10 sekund), pierwsze pole tekstowe Wyświetla "Gotowe".

[!UWAGA]

My.Application.DoEvents Metoda nie może przetwarzać zdarzenia w taki sam sposób, formularz nie.Aby włączyć formularz bezpośrednio obsługiwać zdarzenia, można użyć wielowątkowość.Aby uzyskać więcej informacji, zobacz Wątkowość (C# i Visual Basic).

Zobacz też

Zadania

Porady: deklarowanie zdarzeń niestandardowych w celu zachowywania pamięci (Visual Basic)

Porady: deklarowanie zdarzeń niestandardowych w celu unikania blokowania (Visual Basic)

Informacje

RaiseEvent — Instrukcja

Implements — Instrukcja

AddHandler — Instrukcja

RemoveHandler — Instrukcja

Handles — Klauzula (Visual Basic)

Delegate — Instrukcja

Shared (Visual Basic)

Shadows (Visual Basic)

Inne zasoby

Zdarzenia (Visual Basic)