C#’ta TextBox ve ListBox İle Suggest Yapısı
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..

Hocam benim sorunum şu richtextboxa yazılan metin ile accesste mevcut metni karşılaştırıp yazım hatalarını, doğru yanlış yazılan metinlerin sayısını programda nasıl yazdıracağımı bilemiyorum, o yüzden de size danışmak istedim. Şimdi size ekte İbrahim Akgün isimli bir şahıs tarafından yapılan Katipseçsis programını gönderiyorum benim projemde buna benzer bir program yazmak ama yukarıda belirttiğim gibi karşılaştırmayı nasıl yapacağımı çözemedim. Yardımınızı bekliyor olacağım hocam. Şimdiden teşekkür eder çalışma hayatınızda başarılar dilerim.
https://s2.dosya.tc/server11/5ghe77/katipsecsis.zip.html?fbclid=IwAR0gxu5zGIleXV_oreA4Nbl5MSIaKydxOobwwEtsJoE681p4aSMoV5JTerk
Mehraba,
İlgili operasyonu basit bir döngü ile karakter karşılaştırması yaparak hızlıca çözebilirsiniz.