VB.NET AddHandler RemoveHandlerVB6 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.
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.
