Aracılığıyla paylaş


RaiseEvent Deyimi

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

RaiseEvent eventname[( argumentlist )]

Bölümleri

  • eventname
    Gerekli.Olayı tetiklemek için adı.

  • argumentlist
    İsteğe Bağlı.Değişkenler, diziler ya da deyimler virgülle ayrılmış listesi.argumentlist Bağımsız değişkeni, ayraç içine yerleştirilmesi gerekir.Hiçbir bağımsız değişken varsa, parantez gözardı edilmesi gerekir.

Notlar

Gerekli eventname olay adı modülü içinde bildirilir.Bu Visual Basic değişken adlandırma kurallarını izler.

Olay ortaya çıkar modülü içinde bildirilmemiş bir hata ortaya çıkar.Aşağıdaki kod parçası, bir olay bildirimi ve olay harekete geçirilen 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

Kullanamazsınız RaiseEvent modülünde açıkça bildirilmeyen olayları yükseltmek.Örneğin, tüm formları devralır bir Click olay Form, kullanarak yükseltilemez RaiseEvent türetilmiş bir biçimde.Bildirirseniz bir Click olay formu modülünde, formun kendi gölgeleri Click olay.Formun hala harekete Click çağırarak olay OnClick yöntemi.

Varsayılan olarak, Visual Basic'te tanımlı bir olay, olay işleyicilerini bağlantı kurulan sırada yükseltir.Olayların olabileceği için ByRef parametreleri, geç bağlanan bir işlem bir önceki olay işleyicisi tarafından değiştirilen Parametreler alabilirsiniz.Olay işleyicilerini yürüttükten sonra Denetim olayı altyordamını döndürülür.

[!NOT]

Olayları paylaşılmayan bildirilmiş sınıf yapıcısı içinde yükseltilmiş olması değil.Bu tür olayların çalışma zamanı hataları neden olmaz, ancak bunlar ilişkili olay iþleyicileri tarafýndan biryöntem başarısız olabilir.Use Shared değiştirici bir kurucu gelen bir olayı başlatmak gerekiyorsa, paylaşılan bir olay oluşturamadı.

[!NOT]

Özel bir olay tanımlayarak olayları'nın varsayılan davranışını değiştirebilir.Özel olaylar için RaiseEvent deyimi çalıştırır olayın RaiseEvent erişimci.Özel olaylar hakkında daha fazla bilgi için bkz: Event Deyimi.

Örnek

Aşağıdaki örnek, 10'dan 0 saniye aşağı saymak olaylarýný kullanýr.Olayla ilgili yöntemleri, özellikleri ve deyimler de dahil olmak üzere, birkaç kod göstermektedir RaiseEvent ifadesi.

Bir olayı başlatan olay kaynağı sınıftır ve olay işleme yöntemlerini olay işleyicileridir.Birden çok işleyicileri, olaylar için olay kaynağı olabilir.Olay sınıfı harekete geçiren, o olay nesnesinin bu örnek için olayları işlemek için seçti her sınıf oluşturuldu.

Örnek bir form da kullanır (Form1) bir düğme ile (Button1) ve metin kutusunu (TextBox1).Düğmeyi tıklattığınızda, 10'dan geri sayım 0 saniye için ilk metin kutusunu görüntüler.Tam gün (10 saniye) geçtiğinde "Bitti" birinci metin kutusu görüntüler.

Kodu Form1 formun ilk ve terminal durumlarını belirtir.Bu olaylar oluştuğunda yürütülen kod içerir.

Bu örneği kullanmak için yeni bir Windows Application projesi açın, adlı bir düğme eklemek Button1 ve adlı bir metin kutusu TextBox1 ana forma adlı Form1.Formu sağ tıklatın ve tıklatın sonra View Code kod düzenleyicisini açın.

Ekleme bir WithEvents Tanımlamalar bölümünde değişken Form1 sınıfı.

Private WithEvents mText As TimerState

Koda aşağıdaki kodu ekleyip Form1.Bulunabilecek, gibi herhangi bir yinelenen yordamları yerine Form_Load, veya 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

Yukarıdaki örneği çalıştırın ve etiketli düğmeyi tıklatın için F5 tuşuna Start.İlk metin kutusunu saniye saymak başlar.Tam gün (10 saniye) geçtiğinde "Bitti" birinci metin kutusu görüntüler.

[!NOT]

My.Application.DoEvents Yöntemi işleme olayları tam olarak aynı şekilde form yaptığı gibi.Form doğrudan olayları işlemek izin vermek için kullanabileceğiniz çoklu kullanım.Daha fazla bilgi için bkz. İş Parçacığı Oluşturma (C# ve Visual Basic).

Ayrıca bkz.

Başvuru

Event Deyimi

AddHandler Deyimi

RemoveHandler Deyimi

Handles Tümcesi (Visual Basic)

Diğer Kaynaklar

Olaylar (Visual Basic)