RaiseEvent Deyimi

Bir sınıf, form veya belge içinde modül düzeyinde bildirilen bir olayı tetikler.

Syntax

RaiseEvent eventname[( argumentlist )]  

Bölümler

eventname
Gereklidir. Tetiklenen olayın adı.

argumentlist
İsteğe bağlı. Değişkenlerin, dizilerin veya ifadelerin virgülle ayrılmış listesi. Bağımsız argumentlist değişkenin parantez içine alınmış olması gerekir. Bağımsız değişken yoksa parantezlerin atlanmış olması gerekir.

Açıklamalar

Gerekli, eventname modülde bildirilen bir olayın adıdır. Bu, Visual Basic adlandırma kurallarına göre hesaplanır.

Olay, oluştuğu modülde bildiriliyorsa bir hata oluşur. Aşağıdaki kod parçası bir olay bildirimini ve olayın ortaya çıkar olduğu yordamı göstermektedir.

' 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

modülde RaiseEvent açıkça bildirilen olayları yükseltmek için kullanılamaz. Örneğin, tüm formlar bir Click olayı kaynağından System.Windows.Forms.Form devralarak türetilmiş bir RaiseEvent formda kullanılarak yükselt kullanılamaz. Form modülünde Click bir olay bildiriyorsanız, formun kendi olayı Click gölgeler. Yine de yöntemini çağırarak Click formun olaylarını OnClick çağırabilirsiniz.

Varsayılan olarak, Visual Basic tanımlanan bir olay, bağlantı kurulma sırasına göre olay işleyicilerini yükselter. Olaylar parametrelere ByRef sahip olduğundan, geç bağlanan bir işlem, önceki bir olay işleyicisi tarafından değiştirilmiş parametreleri alır. Olay işleyicileri yürüttükten sonra, denetimi olayı yükselten alt yönlendirene döndürülür.

Not

Paylaşılmayan olaylar, bildirildikleri sınıfın oluşturucusu içinde yükseltilmeyen olaylardır. Bu tür olaylar çalışma zamanı hatalarına neden olmaz, ancak ilişkili olay işleyicileri tarafından yakalanamayabilirsiniz. Oluşturucudan Shared bir olay oluşturmanız gerekirse paylaşılan bir olay oluşturmak için değiştiriciyi kullanın.

Not

Özel bir olay tanımlayarak olayların varsayılan davranışını değiştirebilirsiniz. Özel olaylar için deyimi RaiseEvent olayın erişimcilerini RaiseEvent çağırır. Özel olaylar hakkında daha fazla bilgi için bkz. Event Deyimi.

Örnek 1

Aşağıdaki örnek, 10 ile 0 arasında saniyeleri saymak için olayları kullanır. Kod, deyimi de dahil olmak üzere olayla ilgili yöntemlerin, özelliklerin ve deyimlerin birkaçı RaiseEvent gösterir.

Bir olayı yükselten sınıf olay kaynağıdır ve olayı işleme yöntemleri olay işleyicileridir. Bir olay kaynağı, oluşturulan olaylar için birden çok işleyiciye sahip olabilir. Sınıf olayı yükselttirse, bu olay nesnenin bu örneği için olayları işlemek için seçilmiş olan her sınıf üzerinde ortaya çıkar.

Örnek ayrıca düğme ( ) ve metin kutusu () ile bir form Form1 ( Button1 ) TextBox1 kullanır. Düğmeye tıklarken, ilk metin kutusunda 10 ile 0 saniye arasında bir geri sayım görüntülenir. Tam süre (10 saniye) doldu, ilk metin kutusunda "Bitti" görüntülenir.

için Form1 kod, formun ilk ve terminal durumları belirtir. Ayrıca olaylar ortaya çıkarken yürütülen kodu da içerir.

Bu örneği kullanmak için yeni bir uygulama Windows projesini açın, adlı bir düğme ve adlı ana Button1 TextBox1 forma adlı bir metin kutusu Form1 ekleyin. Ardından forma sağ tıklayın ve Kod Düzenleyicisi'ni açmak için Kodu Görüntüle'ye tıklayın.

sınıfının WithEvents bildirim bölümüne bir değişken Form1 ekleyin.

Private WithEvents mText As TimerState

Örnek 2

aşağıdaki kodu koduna Form1 ekleyin. , veya gibi mevcut olan tüm yinelenen Form_Load yordamları Button_Click değiştirin.

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

Önceki örneği çalıştırmak için F5 tuşuna basın ve Başlat etiketli düğmeye tıklayın. İlk metin kutusu saniyeleri saymaya başlar. Tam süre (10 saniye) doldu, ilk metin kutusunda "Bitti" görüntülenir.

Not

yöntemi, My.Application.DoEvents olayları formla tam olarak aynı şekilde işlemez. Formun olayları doğrudan işlemesine izin vermek için çoklu iş parçacığı kullanımı kullanabilirsiniz. Daha fazla bilgi için bkz. Yönetilen İş Parçacığı.

Ayrıca bkz.