Bugün bir arkadaşım tarafından istenen, C#’ta TextBox ve ListBox nesnelerini kullanarak Suggest yapısının nasıl oluşturulacağını sizlerle paylaşacağım.
Mevzu şundan ibaret, formumuzda birer TextBox ve ListBox nesnelerinin mevcut olduğunu düşünelim.TextBox’a yazılan her değer için arkaplandaki veri kaynağında arama gerçekleşecek ve ListBox nesnemizde o değere en uygun veriler listelenecektir.Yani bildiğiniz Google amcadaki Suggest yapısının C# versiyonunu oluşturacağız.
Öncelikle formumuzun görüntüsü aşağıdaki gibi olacaktır.
Gerekli C# kodlarımızda aşağıda gözüktüğü gibi olacaktır.
List<string> Veriler = new List<string> { "Ahmet","Ali","Ayşe","Aslı", "Mehmet","Melih","Metin", "Hilmi","Hakan","Hüdaverdi", "Necati"
,"Necmettin", "Hüseyin", "Niyazi", "Naci", "Bilmemne", "asda" };
//Veri kaynağımız.
private void textBox1_TextChanged(object sender, EventArgs e)
{
/*TextChanged olayında çalışmamızın sebebi, TextBox nesnemizin değeri her
tetiklendiğinde farklı karakterlere sahip olacağından dolayıdır.*/
listBox1.DataSource = null;
/*Bu olay her tetiklendiğinde ListBox nesnemizin
DataSource özelliğine null değeri veriyoruz.
Bunun sebebi her tetiklenme anında aşağıdaki
ListelenecekVeriler isimli koleksiyonumuzun
farklı verilerle dolmasındandır.*/
int Harf = 0;
string Harfler = "";
List<string> ListelenecekVeriler = new List<string>();
for (int i = 0; i < textBox1.Text.Length; i++)
{
Harfler += textBox1.Text[Harf].ToString();
Harf++;
for (int j = 0; j < Veriler.Count; j++)
{
if (i == textBox1.Text.Length - 1)
{
bool Durum = Veriler[j].StartsWith(Harfler);
if (Durum)
ListelenecekVeriler.Add(Veriler[j]);
}
}
}
/*
Yukarıdaki iç içe iki döngüyü incelerseniz eğer
TextBox nesnemize yazılan değerleri
gerekli algoritma sayesinde Veriler isimli
koleksiyonumuzla karşılaştırıyor ve
karşılaştırma sonucuna uyan verileri
ListBox nesnemize kaynak olarak vermek için
ListelenecekVeriler isimli koleksiyonumuzda topluyor.
*/
listBox1.DataSource = ListelenecekVeriler;
ListelenecekVeriler.Clear();
}
Umarım programatik kodları incelerken algoritmik yapıyı takip edebilirsiniz.C#’ta Suggest ListBox nesnesi dışında koleksiyon mantığıyla çalışan herhangi bir nesneyle de gerçekleştirebilirsiniz.Lakin sizlere şöyle bir bilgi daha vermek isterim.DataView ve DataGridView nesnelerini kullanarak, T-SQL deki “Like” mantığıyla çalışan bir Suggest yapısına benzer çalışmada gerçekleştirebilirsiniz.Bu konu hakkında ADO.NET – DataView Nesnesi başlıklı yazımdan faydalanabilirsiniz.
Sonraki yazılarımda görüşmek ümidiyle..
İyi çalışmalar dilerim..