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
Handles Tümcesi (Visual Basic)