Instrukcja RaiseEvent
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 System.Windows.Forms.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 Oświadczenie zdarzeń.
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ątki (C# i Visual Basic).
Zobacz też
Informacje
Klauzula Handles (Visual Basic)