Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

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.
C#Suggest

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..

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. Faruk dedi ki:

    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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.