En iyi yanıtlayıcılar
Event İçinde Event Kullanımı

Soru
-
Örneğin; Radio Buton Checked olduğunda içinde ki if'e textbox text changed event tanımlamak istiyorum.
İç içe event kullanmak istiyorum bir yolu varmıdır?
- Düzenleyen Umut Can Turhan 18 Mart 2017 Cumartesi 20:48
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
- Yanıt Olarak İşaretleyen Umut Can Turhan 18 Mart 2017 Cumartesi 13:07
Tüm 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
- Yanıt Olarak İşaretleyen Umut Can Turhan 18 Mart 2017 Cumartesi 13:07
-
-
Ç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?
-
-
-
-
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 :)
-
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.
-
-
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 ;)
- Düzenleyen Mustafa BÜKÜLMEZz 20 Mart 2017 Pazartesi 11:32