Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyzwala zdarzenie zadeklarowane na poziomie modułu w klasie, formularzu lub dokumencie.
Składnia
RaiseEvent eventname[( argumentlist )]
Części
eventname
To jest wymagane. Nazwa zdarzenia do wyzwolenia.
argumentlist
Opcjonalny. Rozdzielana przecinkami lista zmiennych, tablic lub wyrażeń. Argument argumentlist musi być ujęta nawiasami. Jeśli nie ma argumentów, nawiasy muszą zostać pominięte.
Uwagi
Wymagana eventname jest nazwa zdarzenia zadeklarowanego w module. Jest zgodny z konwencjami nazewnictwa zmiennych języka Visual Basic.
Jeśli zdarzenie nie zostało zadeklarowane w module, w którym jest zgłaszane, wystąpi błąd. Poniższy fragment kodu ilustruje deklarację zdarzenia i procedurę, w której jest zgłaszane zdarzenie.
' 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 metody do zgłaszania zdarzeń, które nie są jawnie zadeklarowane w module. Na przykład wszystkie formularze dziedziczą Click zdarzenie z System.Windows.Forms.Formelementu , nie można go zgłaszać przy użyciu RaiseEvent w postaci pochodnej. Jeśli zadeklarujesz Click zdarzenie w module formularza, wymyka się ono własnemu Click zdarzeniu formularza. Nadal można wywołać zdarzenie formularza Click , wywołując metodę OnClick .
Domyślnie zdarzenie zdefiniowane w języku Visual Basic zgłasza programy obsługi zdarzeń w kolejności nawiązywania połączeń. Ponieważ zdarzenia mogą mieć ByRef parametry, proces, który łączy się późno, może odbierać parametry, które zostały zmienione przez wcześniejszą procedurę obsługi zdarzeń. Po wykonaniu procedur obsługi zdarzeń kontrolka jest zwracana do podrouty, która wywołała zdarzenie.
Uwaga / Notatka
Zdarzenia nieudzielone nie powinny być wywoływane w konstruktorze klasy, w której są deklarowane. Chociaż takie zdarzenia nie powodują błędów czasu wykonywania, mogą one nie zostać przechwycone przez skojarzone programy obsługi zdarzeń.
Shared Użyj modyfikatora, aby utworzyć zdarzenie udostępnione, jeśli musisz zgłosić zdarzenie z konstruktora.
Uwaga / Notatka
Domyślne zachowanie zdarzeń można zmienić, definiując zdarzenie niestandardowe. W przypadku zdarzeń niestandardowych instrukcja RaiseEvent wywołuje metodę dostępu zdarzenia RaiseEvent . Aby uzyskać więcej informacji na temat zdarzeń niestandardowych, zobacz Event Statement (Instrukcja zdarzenia).
Przykład 1
W poniższym przykładzie użyto zdarzeń, aby odliczyć sekundy z zakresu od 10 do 0. Kod ilustruje kilka metod, właściwości i instrukcji związanych z zdarzeniami, w tym instrukcję RaiseEvent .
Klasa, która zgłasza zdarzenie, jest źródłem zdarzeń, a metody przetwarzania zdarzenia to programy obsługi zdarzeń. Źródło zdarzeń może mieć wiele procedur obsługi dla generowanych zdarzeń. Gdy klasa zgłasza zdarzenie, to zdarzenie jest wywoływane w każdej klasie, która wybrała obsługę zdarzeń dla tego wystąpienia obiektu.
W przykładzie pokazano czasomierz, który odlicza się od 10 do 0 sekund i wyświetla postęp w konsoli. Po zakończeniu odliczania zostanie wyświetlony komunikat "Gotowe".
Zadeklaruj zmienną WithEvents w klasie, aby obsługiwać zdarzenia z czasomierza:
Public Class TimerExample
Private WithEvents mTimer As TimerState
Przykład 2
Dodaj następujący kod, aby zaimplementować programy obsługi zdarzeń i logikę czasomierza. W tym przykładzie pokazano, jak używać instrukcji w RaiseEvent celu powiadamiania procedur obsługi zdarzeń po zaktualizowaniu lub zakończeniu czasomierza.
Public Sub StartCountdownExample()
mTimer = New TimerState()
mTimer.StartCountdown(10.0, 1.0)
End Sub
Private Sub mTimer_UpdateTime(ByVal Countdown As Double) Handles mTimer.UpdateTime
Console.WriteLine("Time remaining: " & Format(Countdown, "##0.0") & " seconds")
End Sub
Private Sub mTimer_Finished() Handles mTimer.Finished
Console.WriteLine("Done")
End Sub
End Class
Public Class TimerState
Public Event UpdateTime(ByVal Countdown As Double)
Public Event Finished()
Public Sub StartCountdown(ByVal Duration As Double,
ByVal Increment As Double)
Dim SoFar As Double = 0
Do While SoFar < Duration
System.Threading.Thread.Sleep(CInt(Increment * 1000))
SoFar += Increment
RaiseEvent UpdateTime(Duration - SoFar)
Loop
RaiseEvent Finished()
End Sub
End Class
Po uruchomieniu poprzedniego przykładu rozpoczyna się odliczanie sekund od 10 do 0, wyświetlając postęp w konsoli. Gdy upłynął pełny czas (10 sekund), zostanie wyświetlony komunikat "Gotowe".