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.
Olay, bir program bileşeni tarafından tanınan ve yanıt vermek üzere kod yazabileceğiniz bir eylem veya oluşumdur (fare tıklaması veya kredi sınırı aşılmış gibi). Olay işleyicisi, bir olaya yanıt vermek için yazdığınız koddur.
Visual Basic'te olaylarla çalışmanın iki tarafı vardır:
- Olay yayımlama — Sınıflar Olayları bildirir ve RaiseEvent Deyimini kullanarak ilginç bir şey olduğunda bunları tetikler. Olay işleyicilerini tetikleyen budur.
-
Olay aboneliği — Belirli olaylar için prosedürleri işleyici olarak tanımlayarak olaylara abone olabilirsiniz. Bunu bir
Handlesyan tümce veWithEventsdeğişkenle veya AddHandler Deyimiyle yapabilirsiniz.
Visual Basic'te olay işleyicisi bir Sub yordamdır. Kodunuz, diğer Sub yordamlar gibi onu doğrudan çağırmaz. Bunun yerine olay yayımcıları, yordam olaya abone olduğundan olay tetiklendiğinde yordamı çağırır.
Visual Basic'te olaylara abone olmak için varsayılan yöntem Handles yan tümcesi kullanmaktır. Tümleşik geliştirme ortamında (IDE) programladığınızda olay işleyicileri tasarımcılar tarafından bu şekilde yazılır. deyimi AddHandler , çalışma zamanında olaylara dinamik olarak abone olmak için uygundur.
Olay gerçekleştiğinde, Visual Basic olay işleyici yordamını otomatik olarak çağırır. Olaya erişimi olan tüm kodlar RaiseEvent Deyimi yürüterek bunun oluşmasına neden olabilir.
Aynı olayla birden fazla olay işleyicisi ilişkilendirebilirsiniz. Bazı durumlarda bir işleyiciyi bir olaydan ayırabilirsiniz. Daha fazla bilgi için bkz. Olaylar.
Bir olaya Handles ve WithEvents kullanarak abone olun
Olayın bir Event Deyimi ile bildirildiğinden emin olun.
Anahtar sözcüğünü kullanarak modül veya sınıf düzeyinde bir nesne değişkeni bildirin
WithEvents. Bu değişkeninAsyan tümcesi, olayı tetikleyen sınıfı belirtmelidir.Olay işleme
Subyordamının bildiriminde değişkeni ve olay adını belirtenHandlesbirWithEventsyan tümcesi ekleyin.Olay gerçekleştiğinde, Visual Basic otomatik olarak
Subyordamını çağırır. KodunuzRaiseEventdeyimini kullanarak olayı tetikleyebilir ve abone olunan tüm işleyicileri çalıştırabilir.Aşağıdaki örnek bir olayı ve olayı oluşturan sınıfa başvuran bir
WithEventsdeğişkeni tanımlar. Olay işlemeSubyordamı, işlediği sınıfı ve olayı belirtmek için birHandlesyan tümcesi kullanır.' Example showing event handling with Handles and WithEvents Public Class EventPublisher Public Event SomethingHappened() Public Sub CauseEvent() ' Raise the event when something interesting happens RaiseEvent SomethingHappened() End Sub End Class Public Class EventSubscriber ' Declare a WithEvents variable Dim WithEvents eventObj As New EventPublisher ' Handle the event using Handles clause Public Sub ProcessHappen() Handles eventObj.SomethingHappened ' Insert code to handle somethingHappened event. Console.WriteLine("Event handled using Handles clause!") End Sub Public Sub TriggerEvent() eventObj.CauseEvent() End Sub End Class
AddHandler kullanarak bir olaya abone olma
Olayın bir
Eventdeyimiyle bildirildiğinden emin olun.Olay işleme yordamını olaya dinamik olarak bağlamak için
Subyürütür.Olay gerçekleştiğinde, Visual Basic otomatik olarak
Subyordamını çağırır. Kodunuz bir ifade kullanarakRaiseEventolayını tetikleyebilir ve tüm abone işleyicileri çağırabilir.Aşağıdaki örnek, yordamı özel zamanlayıcı olayı için bir olay işleyicisi olarak ilişkilendirmek için oluşturucudaki
OnTimerElapsedkullanır.' Example showing event handling with AddHandler Public Class Timer Public Event TimerElapsed(ByVal message As String) Public Sub Start() ' Simulate timer elapsed RaiseEvent TimerElapsed("Timer has elapsed!") End Sub End Class Public Class Application Private appTimer As New Timer() Sub New() ' Use AddHandler to dynamically associate event handler AddHandler appTimer.TimerElapsed, AddressOf OnTimerElapsed End Sub Private Sub OnTimerElapsed(ByVal message As String) ' Insert code to handle timer elapsed event Console.WriteLine($"Handling timer event: {message}") End Sub Public Sub StartTimer() appTimer.Start() End Sub End ClassRemoveHandler deyimini yürüterek bir olay işleyicisini bir olaydan ayırabilirsiniz.