none
Event İçinde Event Kullanımı RRS feed

Yanıtlar

  • @ilhan, @cem

    ondan bahsetmiyor ki. RadioButton Checked ike aynı zamanda textbox un changed olayı tetiklensin istiyor. 

    @Umut

    private void RadioButton1_Checked(object sender, EventArgs e)
    {
      RadşoButton rb = sender as RadioButton;
      if(rb.Checked)
      {
        TextChange();
      }
    }
    
    private void TextBox1_TextChanged(object sender, EventArgs e)
    {
      TextChange();
    }
    
    private void TextChange()
    {
      //TextChange event i buraya yönleniyor
    }
    gibi bir yöntemle yapabilirsin

    16 Mart 2017 Perşembe 16:05

Tüm Yanıtlar

  • Txt_Adi.TextChanged += Txt_Adi_TextChanged;

     void Txt_Adi_TextChanged(object sender, EventArgs e)
     {
          //İşlemlerin
     }

    işin bitincede 

    Txt_Adi.TextChanged -= Txt_Adi_TextChanged; ile silebilirsin.

    16 Mart 2017 Perşembe 15:45
  • @ilhan, @cem

    ondan bahsetmiyor ki. RadioButton Checked ike aynı zamanda textbox un changed olayı tetiklensin istiyor. 

    @Umut

    private void RadioButton1_Checked(object sender, EventArgs e)
    {
      RadşoButton rb = sender as RadioButton;
      if(rb.Checked)
      {
        TextChange();
      }
    }
    
    private void TextBox1_TextChanged(object sender, EventArgs e)
    {
      TextChange();
    }
    
    private void TextChange()
    {
      //TextChange event i buraya yönleniyor
    }
    gibi bir yöntemle yapabilirsin

    16 Mart 2017 Perşembe 16:05
  • TextBox1_TextChanged(null,null);
    16 Mart 2017 Perşembe 16:33
  • Çok Teşşekkür ederim. Yardımcı Olduğunuz için. Peki, Tek bir event içerisinde birden fazla fonksiyonu nasıl kullanabilirim? Örneğin;

    private void TextBox1_TextChanged(object sender, EventArgs e)
    {
      TextChange();
    }

    Bu event içerisinde ben ayrıca tanımladığım TextChange_2(); fonksiyonunu kullanmak istiyorum lakin iki tane fonksiyon yazdığımda derleyici yalnızca son satırdaki fonksiyonu kullanıyor diğerleri işlevsiz kalıyor yani. Bunun bir çözüm yolu var mıdır?

    18 Mart 2017 Cumartesi 13:07
  • alt alta istedigin kadar fonsiyon yazabilirsin bunları sıra ile işleme alır.
    18 Mart 2017 Cumartesi 14:04
  • Maalesef almıyor sadece en sondakini işleme alıyor :/.
    18 Mart 2017 Cumartesi 20:48
  • tek tek kontrol et. Gönderdiğin yerden işlemi yapıp dönüyor olmasın. En alttakileri kapat en üstten tek tek yap debug ile kontrol et. 
    18 Mart 2017 Cumartesi 21:56
  • private void radioButton1_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton rb = sender as RadioButton;
                if (rb.Checked == true)
                {
                    label12.Text = radioButton1.Text+" 'a Göre Sıralama";
                    TextChange();
                }
            }
    
            private void radioButton2_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton rb = sender as RadioButton;
                if (rb.Checked == true)
                {
                    label12.Text = radioButton2.Text + " 'a Göre Sıralama";
                    TextChange_2();
                }
            }
    
            private void radioButton3_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton rb = sender as RadioButton;
                if (rb.Checked == true)
                {
                    label12.Text = radioButton3.Text + " 'e Göre Sıralama";
                    TextChange_3();
                }
            }
    
           private void textBox10_TextChanged(object sender, EventArgs e)
            {
                TextChange();
                TextChange_2();
                TextChange_3();
            }
    
           private void TextChange()
           {
               //TextChange event i buraya yönleniyor
               DataTable dt = new DataTable();
               if (textBox10.Text.Trim() == "")
               {
                   dt.Clear();
                   da = new OleDbDataAdapter("Select * From Kisiler", con);
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;
               }
               else
               {
                   dt.Clear();
                   OleDbDataAdapter da = new OleDbDataAdapter("Select * From Kisiler where Ad='" + textBox10.Text + "'", con);
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;
               }
           }
    
           private void TextChange_2()
           {
               DataTable dt = new DataTable();
               if (textBox10.Text.Trim() == "")
               {
                   dt.Clear();
                   da = new OleDbDataAdapter("Select * From Kisiler", con);
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;
               }
               else
               {
                   dt.Clear();
                   OleDbDataAdapter da = new OleDbDataAdapter("Select * From Kisiler where Soyad='" + textBox10.Text + "'", con);
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;
               }
           }
    
           private void TextChange_3()
           {
               DataTable dt = new DataTable();
               if (textBox10.Text.Trim() == "")
               {
                   dt.Clear();
                   da = new OleDbDataAdapter("Select * From Kisiler", con);
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;
               }
               else
               {
                   dt.Clear();
                   OleDbDataAdapter da = new OleDbDataAdapter("Select * From Kisiler where Sehir='" + textBox10.Text + "'", con);
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;
               }
           }

    Bakın Amacım şuydu aslında; Ad' Soyad'a ve Şehir'e göre datagridview'de sıralama almak. Hepsini hallettim sayeniz çok sağ olun ama dediğim gibi sadece tek bir yer kaldı. Ad' kısmını Checked olduğunda label ona göre değişiyor (hepsi için geçerli).Sonra Ad'a göre sıralama yapmak için Textbox'ın TextChange durumu göz önüne almak gerekiyor. Bunu da tetikleme ile hallettik. Çok sağ olun. Ama Benim bir tane textbox'ım olduğu için; Yukarıdaki kodlarla isterseniz inceleyin; fonksiyon verdiğimde diğerlerine göre sıralama yapmak istediğimde; 2 adet daha fonksiyon yazmam gerekiyor. Bunda da yalnız en sondakini işleme alıp ona göre değer dönderiyor. Bu kesinlikle bir ödev değil sadece kendimi geliştirme amaçlı hazırlıyorum. Teşekkürler :)

    19 Mart 2017 Pazar 09:36
  • Mantıgın yanlış. 

    1-Textchange olayına yazma çünkü tek harf dahi girsen Veritabanına gidip sorgulama yapıyor eğer her harf yazdıgımda benzerlerinide getirsin diyorsan bu seferse sorgun yanlış (select * from kisiler where sehir like '" + textbox1.text +"%'") şeklinde yazman lazım 

    2- textchange olayına üçünü birden yazıyorsun ki tabiki sıra ile ücünüde çalıştırıyor gereksiz sonuncuyu işleme alıyor yani yazmana göre dogru yapıyor ama yapmak istedigine göre yanlış yapıyor.

    textchange olayına 

    if (rbtad.checked)

       textchange();

    if (rbtsoyad.checked)

        textchange2();

    if (rbtsehir.checked)

       textchange3();

    şeklinde bir kontrol koyarsan çalışır.

    19 Mart 2017 Pazar 10:55
  • Çok Teşekkür ederim yardımlarınız için.
    20 Mart 2017 Pazartesi 10:53
  • Anladığım kadarı ile yanlış yapıyorsun kardeşim.

    Sadece sorgu değiştirmen gerek değil mi? Yani ad seçili iken ada göre soyad seçili iken soyada göre arama yapmasını istiyorsun.

    Bunu sadece sorgu cümlesini değiştirerek de yapabilirsin. Ayrıca textchange diye 3 tane metod oluşturmuşsun bu da yanlış. Parametre alan bir metod işini görecektir. 

    private void TextChange(int AramaSec)
    {
    string query = "select * from kisiler where " ;
    switch (AramaSec)
    {
    case 1:
    query += " ad = " +textbox10.Text;
    dt.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter(query , con);
    da.Fill(dt);
    dataGridView1.DataSource = dt;
    break;
    case 2:
    //textchange  2 deki işlemler case 1 gibi gerekli yerleri değiştirirsin.
    break;
    }}

    Yukarıdaki örneğe göre tek metodda işi çözersin.

    Ek olarak textchange olayı ile sistemi yavaşlatırsın çünkü her karakter girilmesinde sorgu çalıştırır.  

    Örneğin Mustafa yazıp aramak istesem tam 7 kere sorgu çalışacaktır. Bunun nasıl önüne geçerim dersen tam emin olmamakla birlikte ilk olarak verileri bir datatable ye çekersin arama yapılacağı zamanda o datatable içerisinde arama yaptırırsın. ha ama olur mu olmaz mı bilmiyorum :D sadece fikir :)

    Textbox un leave eventi içerisinde kullanman daha iyi olacaktır.

    Son olarak DevExpress i de bir araştırmanı tavsiye ederim ;)


    20 Mart 2017 Pazartesi 11:32