VB.NET AddHandler RemoveHandlerVB6 da forma runtime anında bir kontrol ekliyebiliyorduk. Ancak bu eklenen kontrolun eventlarına ulaşmakta sorun yaşıyorduk. Bunun icin 3 yontem bulunuyordu.
1.si, daha onceden formda olan bir kontrolun Array ini oluşturmak. Ancak bu yontemde her kontrolun numarasını bilmek ve ona gore işlem yapmak gerekiyor ayrıca uzun bir SELECT CASE ifadesi kullanmamız gerekiyor.
2.si Withevents. Bu da guzel bir yontem ancak, runtime da oluşturucağımız kontrollerin sayısını ve turlerini bilmemiz gerekiyor.
3.su Hooking. Bu en iyi ama en zor (ve en karmaşık yontem)
VB.Net bu uc yontemden daha iyi bir yontem geliştirdi.
AddHandler
RemoveHandler
Bu keywordler sayesinde bir kontrolun bir event ını bir prosedure yonlendirebiliriz. Bu sayede yeni eklenen bir kontrolun butun eventlarını sorunsuz yakalayabilir ve yonlendirebiliriz.
Ornek bir kod verelim
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Yukardaki kod bir butonun klik olayının prosedurudur.
Şimdi bir bir delegate prosedur yapıyoruz.
Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Yeni oluşturulan bir butonun click Event ını bu prosedure gondermek icin;
AddHandler Button1.Click, Addressof ButtonClick
kodunu yazmamız yeterlidir.
Addressof, VB6 dan da bildiğimiz gibi, bir prosedurun hafızadaki (memory) adresini (pointer) verir.
Dikkat edilmesi gereken nokta; bir kontrolun bir event ında hangi parametreler var ise (ByVal sender As System.Object, ByVal e As System.EventArgs)
delegate prosedurde de aynıları olmalıdır.
Aynı şekilde RemoveHandler ile de atanmış bir handler kaldırılabilir.
__________________
VB.NET AddHandler RemoveHandler
Programlama0 Mesaj
●23 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama
- VB.NET AddHandler RemoveHandler