RaiseEvent — Instrukcja

Wyzwalacze zdarzenie zadeklarowane na poziomie modułu klasy, formularz lub dokument.

RaiseEvent eventname[( argumentlist )]

Części

  • eventname
    Wymagane.Nazwy zdarzeń, aby wyzwolić.

  • argumentlist
    Opcjonalne.Rozdzielany przecinkami listę zmiennych, tablice lub wyrażeń.argumentlist Argument musi być ujęta w nawiasy.Jeśli nie istnieją żadne argumenty, nawiasy musi być pominięte.

Uwagi

Wymagane eventname jest zadeklarowany jako nazwę zdarzenia w module.Wynika z konwencjami nazewnictwa zmiennych języka Visual Basic.

Jeśli nie został zadeklarowany zdarzenia w module, w którym jest uruchamiany, wystąpi błąd.Poniższy fragment kodu ilustruje deklarację zdarzenia i procedury, w którym zdarzenie jest wywoływane.

' 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

Nie można użyć RaiseEvent do pozyskania zdarzeń, które nie są jawnie zadeklarowane w module.Na przykład, dziedziczą wszystkie formy Click zdarzenia z Form, nie można podwyższyć, za pomocą RaiseEvent w formie pochodnej.Przy deklarowaniu Click zdarzenia w module formularza cieni jej własnych formularza Click zdarzenia.Formularz nadal mogą wywoływać Click zdarzenie, wywołując OnClick metody.

Domyślnie zdarzenia zdefiniowane w programie Visual Basic podnosi jego obsługi zdarzeń w celu, do ustanowienia połączenia.Ponieważ zdarzenia może mieć ByRef parametrów, proces, który łączy z opóźnieniem może pojawić się parametry, które zostały zmienione przez wcześniejsze obsługi zdarzeń.Po wykonanie procedury obsługi zdarzeń, sterowanie jest zwracane do podprocedury, która wzbudziła zdarzenia.

[!UWAGA]

Zdarzenia udostępnionych nie powinny być zwiększone nie wewnątrz konstruktora klasy, w którym są one zgłoszone.Chociaż takie zdarzenia nie powodują błędów czasu wykonywania, niezastosowania się złowionych przez programy obsługi zdarzeń skojarzone.Użyj Shared modyfikator, aby utworzyć zdarzenie udostępnionego, jeśli zdarzenie z konstruktora.

[!UWAGA]

Można zmienić domyślne zachowanie zdarzenia przez definiowanie niestandardowych zdarzeń.Dla zdarzeń niestandardowych RaiseEvent instrukcja wywoła zdarzenie RaiseEvent akcesor.Aby uzyskać więcej informacji dotyczących zdarzeń niestandardowych, zobacz Event — Instrukcja.

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 sprawozdań, łącznie z 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 aplikacji systemu Windows, 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ć w poprzednim przykładzie, 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 Metody nie przetwarzają zdarzenia w taki sam sposób, jak formularz.Aby zezwolić na formularz, aby obsługiwać zdarzenia bezpośrednio, można użyć wielowątkowość.Aby uzyskać więcej informacji, zobacz Wątkowość (C# i Visual Basic).

Zobacz też

Informacje

Event — Instrukcja

AddHandler — Instrukcja

RemoveHandler — Instrukcja

Handles — Klauzula (Visual Basic)

Inne zasoby

Zdarzenia (Visual Basic)