• 19-07-2018, 22:17:40
    #1
    Merhabalar ,

    Combobaxa veritabanından veri çekiyorum,

    Örn: Ev , Evli , Evcil , Evcilik ,Evlilik , Saman , Susam , Sosis ,


    Bunları combobox a atıyorum comboboxa i harfini girdiğimde (Evli,Exlivlik,Evclil..,Sosis) gelmesini istiyorum.

    Not : AutoCompleteMode ve AutoComplateSoruce kullanıyorum farkar ilk karakterle göre işlem yapıyor bunlar.

    gerekirse küçük ücretli yardımda alabilirim.
  • 19-07-2018, 22:35:16
    #2
    Devexpress kullanabilirsin
  • 19-07-2018, 22:46:53
    #3
    itemlaeı her keypressde doldururken güncelleyebilirsin. istersen her seferinde veri tabanından çağırarak istersen paketi bir liste yükleyip listin içinden eleyerek yapabilirsin.
  • 20-07-2018, 09:10:23
    #4
    KeyPress eventi içine;
    comboBox1.SelectedIndex=comboBox1.Items.Contains(e.KeyChar) ? comboBox1.Items.indexOf(e.KeyChar) : 0;
    kullanabilirsiniz ama ilk sonucu gösterecektir.
    Birden fazla sonuç varsa hata da verebilir tam emin olamadım şimdi 😂😂
  • 20-07-2018, 22:27:06
    #5
    public int enBykBul(ref int[,] dizi)
            {
                int enByk = 0 , index = 0;
                for (int i = 0; i < dizi.GetLength(1) - 1; i++)
                {
                    for (int j = 1; j < dizi.GetLength(1) - i; j++)
                    {
                        if (dizi[0, j] > enByk)
                        {
                            enByk = dizi[0, j];
                            index = dizi[1, j];
                        }
                    }
                }
                return index;
            }
    
            private void btnAra_Click(object sender, EventArgs e)
            {
                string aranan = comboBox1.Text;
                // büyük küçük harfe duyarsız yapmak için aranan ve itmKrtrs kısımlarında ToLower() kullanılabilir.          
                int[,] liste = new int[2, comboBox1.Items.Count]; // esleşme ve combo indexleri için
                for (int x = 0; x < comboBox1.Items.Count; x++)
                {
                    if (aranan.Length > comboBox1.Items[x].ToString().Length) // aranan itemden büyükse es geç
                        continue;
                    string itmKrtrs = comboBox1.Items[x].ToString();
                    int eslesme = 0;
                    for (int i = 0; i < aranan.Length; i++)
                    {
                        if (i >= itmKrtrs.Length)
                            break;
                        if (aranan[i] == itmKrtrs[i])
                            ++eslesme;
                        else
                            i = aranan.Length; // eşleşmediyse döngüden çık
                        liste[0, x] = eslesme; // eslesme sayıları
                        liste[1, x] = x;   // combobox sıra
                      
                    }
                }
                int index = enBykBul(ref liste); // en çok eşleşme olan indexi döndürür.
                if (index != 0)
                    comboBox1.SelectedIndex = index; // listenin başındakini seç
                else
                    MessageBox.Show("Aradığınızı bulamadık :(", "Info", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
    Böyle birşeyler yazdım, aranacak itemi comboboxa yazdıktan sonra butona basınca arama yapıyor ve en çok eşleşme olan itemi seçiyor. Kodlar üzerinde çok kafa yormadım belki daha performanslı bir hale getirebilirsiniz.