C# Birden Çok Event'ı Tek Event Handler'a Bağlamak

Bu kısaca ne anlama geliyor ona bakarsak diyelim ki bir butonumuz var bu buton tıklama veya enter eventlarında ayni işi yapmasını istiyoruz bu durumda ikisi içinde ayrı event handler oluşturmak yerine ayni event handler içinde bu iki eventida kontrol edebiliriz. Bunun için bundan bir önceki konumuz olan Kod ile Kontrole EventHandler Ekleme yazısında öğrendiğimiz gibi oluşturduğumuz buttona [FormAdı].Designer.cs dosyasının içerisinde ki InitializeComponent() metodunun altına

this.button1.Click += new System.EventHandler(button1_Click);

yazarak 'button1_Click' altında yapmasını istediğimiz komutları yazarak tıklama eventını handle edebildik. Peki enter yapıldığında da enter eventını 'button1_Click' metoduyla handle etmek istesek ne yaparız? Bunun için ayni şekilde:

 this.button1.Enter += new System.EventHandler(button1_Click);

yaparak Enter eventinide  'button1_Click' metoduna bağlamış olduk. Artık hem tıklandığında hemde enter yapıldığında bu metodun içindeki kodlar çalıştırılacak.

2 yorum :

  1. Ustam öncelikle merhabalar..
    Ben şunu sorayım;
    Bir EventHandler için onu kullanan kontrollerden hangisinin işlem yaptırdığını nasıl anlarız?
    Örnek: 4 tane TextBox'ımız varsa ve bir Mouse_Click olayına TextBox.Clear() metodunu yazsak.. ama hangi textbox tıklanmışsa o textbox temizlensin istiyorum.. bunu nasıl yapabiliriz?
    Şimdiden teşekkürler..

    YanıtlaSil
  2. Merhaba..yurdışındaydım yorumları kontrol edemedim muhtemelen sorunun çözümünü bulmuşsunuzdur ama benim düşündüğüm şeklinide size yazayım benzer bir sorun olursa çözüm için size yardım eder belki.

    string enteredTextBox = "";

    private void textBox1_Enter(object sender, EventArgs e)
    {
    enteredTextBox = "textBox1";
    }

    private void textBox2_Enter(object sender, EventArgs e)
    {
    enteredTextBox = "textBox2";
    }

    private void button1_Click(object sender, EventArgs e)
    {
    if (enteredTextBox != "")
    {
    if (enteredTextBox.Equals("textBox1"))
    textBox1.Clear();
    else if (enteredTextBox.Equals("textBox2"))
    textBox2.Clear();
    }
    }

    Burada textboxların enter event'ıyla hangi textboxa tıklanmış ise global bir değişken olan enteredTextBox değişkenine o textbox'ın ismini atıyorum bu şekilde en son hangi textbox tıklanmış buluyorum. Ben burda bir buton koyup onun click eventıyla tıklanan textboxın silinmesini yaptım sende istediğin gibi butonla veya Mouse_Clik eventina ayni if yapısını kurarak bunu yapabilirsin.

    İyi çalışmalar..

    YanıtlaSil