Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kullanıcı tanımlı bir olay bildirir.
Sözdizimi
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname[(parameterlist)] _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname As delegatename _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Custom Event eventname As delegatename _
[ Implements implementslist ]
[ <attrlist> ] AddHandler(ByVal value As delegatename)
[ statements ]
End AddHandler
[ <attrlist> ] RemoveHandler(ByVal value As delegatename)
[ statements ]
End RemoveHandler
[ <attrlist> ] RaiseEvent(delegatesignature)
[ statements ]
End RaiseEvent
End Event
Parçalar
| Bölüm | Açıklama |
|---|---|
attrlist |
Opsiyonel. Bu olaya uygulanan özniteliklerin listesi. Birden çok öznitelik virgülle ayrılır.
Öznitelik Listesi'ni açılı ayraçlar ("<" ve ">") içine almanız gerekir. |
accessmodifier |
Opsiyonel. Olaya hangi kodun erişebileceğini belirtir. Aşağıdakilerden biri olabilir: - Genel— öğesini bildiren öğeye erişebilen tüm kodlar bu öğeye erişebilir. - Korumalı: Yalnızca sınıfındaki koda veya türetilmiş bir sınıfa erişebilir. - Arkadaş; yalnızca aynı derlemedeki kod bu koda erişebilir. - Özel— yalnızca öğedeki buna erişebildiğini bildiren kod. - Olayın sınıfında, türetilmiş bir sınıfta veya aynı derlemede yalnızca arkadaş kodu korumalı koda erişebilir. - Olayın sınıfında özel Yalnızca korumalı koda veya aynı derlemedeki türetilmiş bir sınıfa erişebilir. |
Shared |
Opsiyonel. Bu olayın bir sınıfın veya yapının belirli bir örneğiyle ilişkilendirilmediğini belirtir. |
Shadows |
Opsiyonel. Bu olayın aynı adlı programlama öğesini veya aşırı yüklenmiş öğe kümesini temel sınıfta yeniden adlandırdığını ve gizlediğini gösterir. Bildirilen herhangi bir öğe türünü başka bir türle gölgeleyebilirsiniz. Gölgeli öğe, gölgelendirme öğesinin erişilemez olduğu durumlar dışında, gölgelenen öğeyi gölgeleyen türetilmiş sınıfın içinden kullanılamaz. Örneğin, bir Private öğe temel sınıf öğesini gölgelerse, öğeye erişme Private izni olmayan kod bunun yerine temel sınıf öğesine erişir. |
eventname |
Gerekli. Olayın adı; standart değişken adlandırma kurallarını izler. |
parameterlist |
Opsiyonel. Bu olayın parametrelerini temsil eden yerel değişkenlerin listesi. Parametre Listesi'ni parantez içine almanız gerekir. |
Implements |
Opsiyonel. Bu olayın bir arabirim olayı uyguladığını gösterir. |
implementslist |
Sağlanırsa Implements gereklidir.
Sub Uygulanan yordamların listesi. Birden çok yordam virgülle ayrılır:implementedprocedure [ , implementedprocedure ... ] Her implementedprocedure birinin söz dizimi ve bölümleri vardır:interface.definedname- interface -Gerekli. Bu yordamın içerdiği sınıf veya yapının uyguladığı arabirimin adı.- Definedname -Gerekli. Yordamın içinde interfacetanımlandığı ad. Bu, bu yordamın tanımlı yordamı uygulamak için kullandığı adla aynı nameolması gerekmez. |
Custom |
Gerekli. olarak Custom bildirilen olaylar özel AddHandler, RemoveHandlerve RaiseEvent erişimcilerini tanımlamalıdır. |
delegatename |
Opsiyonel. Olay işleyici imzasını belirten bir temsilcinin adı. |
AddHandler |
Gerekli. Açıkça AddHandler deyimini kullanarak veya yan tümcesini kullanarak AddHandler örtük olarak bir olay işleyicisi eklendiğinde yürütülecek deyimleri belirten bir erişimci bildirir Handles . |
End AddHandler |
Gerekli. Bloğu sonlandırır AddHandler . |
value |
Gerekli. Parametre adı. |
RemoveHandler |
Gerekli. Bir RemoveHandler olay işleyicisi deyimi kullanılarak kaldırıldığında yürütülecek deyimleri belirten bir erişimci bildirir RemoveHandler . |
End RemoveHandler |
Gerekli. Bloğu sonlandırır RemoveHandler . |
RaiseEvent |
Gerekli. Olay deyimi kullanılarak tetiklendiğinde yürütülecek deyimleri belirten bir RaiseEvent erişimci bildirir RaiseEvent . Genellikle, bu, ve RemoveHandler erişimcileri tarafından tutulan temsilcilerin AddHandler listesini çağırır. |
End RaiseEvent |
Gerekli. Bloğu sonlandırır RaiseEvent . |
delegatesignature |
Gerekli. Temsilcinin gerektirdiği parametrelerle eşleşen parametrelerin delegatename listesi.
Parametre Listesi'ni parantez içine almanız gerekir. |
statements |
Opsiyonel. , RemoveHandlerve RaiseEvent yöntemlerinin AddHandlergövdelerini içeren deyimler. |
End Event |
Gerekli. Bloğu sonlandırır Event . |
Açıklamalar
Olay bildirildikten sonra, olayı yükseltmek için deyimini kullanın RaiseEvent . Aşağıdaki parçalarda gösterildiği gibi tipik bir olay bildirilebilir ve tetiklenebilir:
Public Class EventSource
' Declare an event.
Public Event LogonCompleted(ByVal UserName As String)
Sub CauseEvent()
' Raise an event on successful logon.
RaiseEvent LogonCompleted("AustinSteele")
End Sub
End Class
Uyarı
Olay bağımsız değişkenlerini, yordam bağımsız değişkenlerini yaptığınız gibi, aşağıdaki özel durumlarla bildirebilirsiniz: olayların adlandırılmış bağımsız değişkenleri, ParamArray bağımsız değişkenleri veya Optional bağımsız değişkenleri olamaz. Olayların dönüş değerleri yoktur.
Bir olayı işlemek için, veya AddHandler deyimini kullanarak olayı bir olay işleyicisi alt yordamla Handles ilişkilendirmeniz gerekir. Alt yordam ve olayın imzaları eşleşmelidir. Paylaşılan bir olayı işlemek için deyimini AddHandler kullanmanız gerekir.
Yalnızca modül düzeyinde kullanabilirsiniz Event . Bu, bir olayın bildirim bağlamının bir sınıf, yapı, modül veya arabirim olması gerektiği ve kaynak dosya, ad alanı, yordam veya blok olamayacağı anlamına gelir. Daha fazla bilgi için bkz. Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri.
Çoğu durumda, olayları bildirmek için bu konunun Söz Dizimi bölümündeki ilk söz dizimini kullanabilirsiniz. Ancak bazı senaryolarda olayın ayrıntılı davranışı üzerinde daha fazla denetim sahibi olmanız gerekir. Bu konunun söz dizimi bölümünde yer alan ve anahtar sözcüğünü Custom kullanan son söz dizimi, özel olayları tanımlamanıza olanak tanıyarak bu denetimi sağlar. Özel bir olayda, kod olaya olay işleyicisi eklediğinde veya olaydan olay işleyicisini kaldırdığında ya da kod olayı tetiklediğinde tam olarak ne olduğunu belirtirsiniz. Örnekler için bkz . Nasıl yapılır: Belleği Korumak için Özel Olaylar Bildirme ve Nasıl Yapılır: Engellemeyi Önlemek için Özel Olayları Bildirme.
Örnek
Aşağıdaki örnek, 10 ile 0 saniyeleri saymak için olayları kullanır. Kod, olayla ilgili yöntemlerin, özelliklerin ve deyimlerin birkaçını gösterir. Buna deyimi dahildir RaiseEvent .
Olay oluşturan sınıfı olay kaynağıdır ve olayı işleyen yöntemler olay işleyicileridir. Bir olay kaynağı, oluşturduğu olaylar için birden çok işleyiciye sahip olabilir. Sınıf olayı yükselttiğinde, bu olay nesnenin bu örneği için olayları işlemeyi seçen her sınıfta oluşturulur.
Örnek ayrıca düğme () ve metin kutusu (Form1) içeren bir form (Button1TextBox1) kullanır. Düğmeye tıkladığınızda, ilk metin kutusunda 10 ila 0 saniyelik bir geri sayım görüntülenir. Tam süre (10 saniye) sona erdiğinde, ilk metin kutusunda "Bitti" ifadesi görüntülenir.
için Form1 kod, formun başlangıç ve terminal durumlarını belirtir. Ayrıca olaylar tetiklendiğinde yürütülen kodu da içerir.
Bu örneği kullanmak için yeni bir Windows Forms projesi açın. Ardından ana forma adlı Button1 bir düğme ve adlı TextBox1 bir metin kutusu ekleyin.Form1 Ardından forma sağ tıklayın ve Kodu Görüntüle'ye tıklayarak kod düzenleyicisini açın.
sınıfının bildirimler bölümüne Form1 bir WithEvents değişken ekleyin:
Public Class TimerExample
Private WithEvents mTimer As TimerState
koduna aşağıdaki kodu Form1ekleyin. veya Button_Clickgibi Form_Load var olabilecek yinelenen yordamları değiştirin.
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
Önceki örneği çalıştırmak için F5 tuşuna basın ve Başlangıç etiketli düğmeye tıklayın. İlk metin kutusu saniyeleri saymaya başlar. Tam süre (10 saniye) sona erdiğinde, ilk metin kutusunda "Bitti" ifadesi görüntülenir.
Uyarı
yöntemi, My.Application.DoEvents olayları formun işlediği gibi işlemez. Formun olayları doğrudan işlemesini sağlamak için çoklu iş parçacığı kullanımını kullanabilirsiniz. Daha fazla bilgi için bkz. Yönetilen İş Parçacığı Oluşturma.