Anasayfa > Kodlar > Visual Basic.NET ile AddHandler ve RemoveHandler

Visual Basic.NET ile AddHandler ve RemoveHandler


VB.NET AddHandler RemoveHandler

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.

Emre YAZICI
emre_yazici84@hotmail.com


TD Software


Reklamlar
  1. 21/01/2011, 19:14

    cem :

    Aşağıdaki adreste aynı konulu makalenin 5 sene önce harfi harfine aynısı yer alıyor. Bunun olasılık kuramına göre gerçekleşmesi trilyonda bir ihtimal olmasının ziyadesinde bu makalenin çalıntı olması gözümde nedense daha ağır basıyor. Lütfen alıntıların altına isim yazmanın yanında kaynakta belirtin.

    http://www.frmtr.com/visual-basic/1213022-vb-net-addhandler-removehandler.html

    Makale belirttiğiniz siteden alınmamıştır. Belirttiğiniz site makalenin yazarınının ismini dahil silmiştir

    Makalenin 7 sene önceki orjinal hali: http://www.programlama.com/sys/c2html/view.php?DocID=2922

    Lütfen bu duyarlılığınızı, belirttiğiniz siteye yapınız

    Beğen

  1. No trackbacks yet.

Bir Yanıt Bırakın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: