film indir
Aralık
11th 2007
VB.NET AddHandler RemoveHandler

Posted under Programlama



VB6 da forma runtime anında bir kontrol ekliyebiliyorduk. Ancak bu eklenen kontrolün eventlarına ulaşmakta sorun yaşıyorduk. Bunun için 3 yöntem bulunuyordu.

1.si, daha önceden formda olan bir kontrolün Array ini oluşturmak. Ancak bu yöntemde her kontrolün numarasını bilmek ve ona göre işlem yapmak gerekiyor ayrıca uzun bir SELECT CASE ifadesi kullanmamız gerekiyor.

2.si Withevents. Bu da güzel bir yöntem ancak, runtime da oluşturucağımız kontrollerin sayısını ve türlerini bilmemiz gerekiyor.

3.sü Hooking. Bu en iyi ama en zor (ve en karmaşık yöntem)


VB.Net bu üç yöntemden daha iyi bir yöntem geliştirdi.

AddHandler
RemoveHandler

Bu keywordler sayesinde bir kontrolün bir event ını bir prosedüre yönlendirebiliriz. Bu sayede yeni eklenen bir kontrolün bütün eventlarını sorunsuz yakalayabilir ve yönlendirebiliriz.

Örnek 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 prosedürüdür.

Şimdi bir bir delegate prosedür 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 prosedüre göndermek için;

AddHandler Button1.Click, Addressof ButtonClick

kodunu yazmamız yeterlidir.

Addressof, VB6 dan da bildiğimiz gibi, bir prosedürün hafızadaki (memory) adresini (pointer) verir.

Dikkat edilmesi gereken nokta; bir kontrolün bir event ında hangi parametreler var ise (ByVal sender As System.Object, ByVal e As System.EventArgs)
delegate prosedürde de aynıları olmalıdır.

Aynı şekilde RemoveHandler ile de atanmış bir handler kaldırılabilir.

Trackback URI | Comments RSS

Yorum Yaz - Leave a Reply