Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 18 odgovora
  • 7.461 pregleda

Najnovija ↓

c# comboBox pretraga 12.03.2010. u 13:16 · pre 202 meseca #1
Pozdrav svima.

Interesuje me kako da napravim pretragu preko comboBoxa, ali da bude naprednija u smislu da se prilikom kucanja karaktera prikazuju svi rezultati u DropDown-u (comboBox DropDownStyle).

Npr.
Ako u combo-u imam sledeće elemente:

Milan
Dragan
Marko
Nenad
Darko

Kada podesim AutoCompleteMode na Suggest i ukucam "N" u dropdown listi dobijam Nenad, ali kada ukucam "rko" ne obijam ništa, a hteo bih da dobijem "Marko","Darko"

Kako to mogu da postignem???

Hvala...
Re: c# comboBox pretraga 12.03.2010. u 13:54 · pre 202 meseca #2
mislim da ces za to morati da napravis neku custom kontrolu...
Potpis
Sedam sutlijasa,
za sedam samuraja,
za sedam tramvaja.
Re: c# comboBox pretraga 12.03.2010. u 15:09 · pre 202 meseca #3
Ajde pokušaj ovako nekako ovo je brzinsko rešenje pa nije ništa optimizovano

nabaci combo na formu pokušaj ovako doradi pa vrati kod da vidimo šta si dobio

Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication7
{
  public partial class Form1 : Form
  {
    List<string> _fullList;
    BindingList<string> _autoCompleteList;
    string _autoCompleteText;
    public Form1()
    {
      InitializeComponent();
      _fullList = new List<string>();
      _autoCompleteList = new BindingList<string>();
      _autoCompleteText = "";
      //iniciajlni podaci za primjer
      _fullList.Add("Milan");
      _fullList.Add("Dragan");
      _fullList.Add("Marko");
      _fullList.Add("Nenad");
      _fullList.Add("Darko");
      FillAutoCompleteList();
      comboBox1.DataSource = _autoCompleteList;
      
    }

    private void FillAutoCompleteList()
    {
      _autoCompleteList.Clear();
      foreach (string str in _fullList)
      {
        if (str.Contains(_autoCompleteText))
        {
          _autoCompleteList.Add(str);
        }
      }
    }

    private void comboBox1_KeyUp(object sender, KeyEventArgs e)
    {
      _autoCompleteText = comboBox1.Text;
      int ss = comboBox1.SelectionStart;
      int sl = comboBox1.SelectionLength;
      FillAutoCompleteList();
      comboBox1.DroppedDown = true;
      comboBox1.Text = _autoCompleteText;
      comboBox1.Select(ss, sl);
    }
  }
}


Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 12.03.2010. u 15:46 · pre 202 meseca #4
E hvala puno...probaću od nedelje, pošto za vikend neću imati vremena, pa kad uradim javljam kako je prošlo...
Ako neko ima još neki predlog nek postuje....
Re: c# comboBox pretraga 15.03.2010. u 23:08 · pre 202 meseca #5
Cola legenda si :) Mislim da ce ovo mnogima koristiti...
Odlicno radi.

Jedino me jos interesuje kako da podesim da nema veze koje je slovo ukucano veliko ili malo...
Npr. ukucam malo "m" da dobijem "Milan", "Marko". na ovaj nacin ne dobijam ocekivan rezultat...

E da, zasto kad otkucam nesto u comboBox-u, i pokusam da postavim kursor na formu on "ode" iza forme???(u ovom slucaju)

Re: c# comboBox pretraga 15.03.2010. u 23:28 · pre 202 meseca #6
lako
samo zamjeni da porediš npr oba toupper
Code:

private void FillAutoCompleteList()
    {
      _autoCompleteList.Clear();
      foreach (string str in _fullList)
      {
        if (str.ToUpper().Contains(_autoCompleteText.ToUpper()))
        {
          _autoCompleteList.Add(str);
        }
      }
    }
Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 15.03.2010. u 23:32 · pre 202 meseca #7
Što se tiče kursora ne znam ni ja i ja sam to primjetio
valda neko ima bolje rešenje
ovo mi je bilo brzinsko
vidiš da na promjenu slova presipam iz šupljeg u prazno (očito da ovo ne valja može bolje)
Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 16.03.2010. u 17:59 · pre 202 meseca #8
Citat:
Cola: lako
samo zamjeni da porediš npr oba toupper
Code (csharp):

private void FillAutoCompleteList()
    {
      _autoCompleteList.Clear();
      foreach (string str in _fullList)
      {
        if (str.ToUpper().Contains(_autoCompleteText.ToUpper()))
        {
          _autoCompleteList.Add(str);
        }
      }
    }
 



Ako se postavi ToUpper metoda onda se svako slovo postavlja na veliko, javlja se problem, sada ako se kod stringa "Milan" unese il to postaje IL i ime se ne prikazuje u combobox-u.

Inace dobar program.
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: c# comboBox pretraga 16.03.2010. u 18:07 · pre 202 meseca #9
Mislim da nisi upravu

ja samo poredim sa ToUpper

Code:

if (str.ToUpper().Contains(_autoCompleteText.ToUpper()))
{
          _autoCompleteList.Add(str);
}


primjeti da ja nigdje i nikom ToUpper nisam pridružio. Promjenljiva str i _autoCompleteText i dalje zadržavaju svoje vrijednosti. Ja sam ih samo poredio ToUpper a kanije dodajem u listu onakvu vrednost kakva je i bila!
Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 16.03.2010. u 19:11 · pre 202 meseca #11
Pa pazi ToUpper ne mijenja stanje promjenljive nadam se da je to jasno

ToUpper mi koristi samo da bi uporedio vrijednosti

u _fullList iz koje kupim stingove u promjenljivu str stoje sledeće vrijednosti (ove pod navodnicima)
_fullList.Add("Milan");
_fullList.Add("Dragan");
_fullList.Add("Marko");
_fullList.Add("Nenad");
_fullList.Add("Darko");
kada sa foreach kupi svaki pojedninačno ja dobijam baš te vrijednosti

u combo kada ukucaš 'il' program ne mijenjam vrijednost toga što je ukucano!
On samo radi upoređivanja digne vrijednosti ToUpper ali vrijesnost u promjenljivama i dalje ostaju onakve kakve su bile u konkretnom slučaju koji si naveo

_autoCompleteText = 'il' ali je _autoCompleteText.ToUpper() je 'IL'
dok je u promjenljivoj str vrijednost jedan iz liste npr. 'Milan' ali je str.ToUpper() je 'MILAN' a 'MILAN'. Contains('IL') je true pa se u _autoCompleteList doaje vrijednost promjenljiva str a ona je kao što sam gore napiso jedna (originalna, neizmjenjena) iz originalne liste dakle 'Milan' a ne 'Milan' ili 'milan'

ne kontam šta je nejasno
Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 16.03.2010. u 20:01 · pre 202 meseca #14
Ja sam hteo da bude case sensitive...znaci kad ukucam "m" da izbaci "Milan","Marko" recimo.
ali isto tako kada ukucam "R" da dobijem recimo "Darko"...
Tj. kao sto je rekao AMD da ne bude case sensitive...

Moguce da sam ja lose objasnio...
Re: c# comboBox pretraga 16.03.2010. u 20:17 · pre 202 meseca #15
Da tako i radi sa ToUpper ako se to ne želi onda ne treba koristiti takvo upoređivanje

Nešto ne štima u mojoj definiciji case sensitive ili u vašoj.

kada je nešto case sensitive onda je osetljivo na mala i velika i u tom slušaju 'm' nije isto što i 'M'
dok je case insensitive jeste tako ja tumačim ispravite me ako griješim.
hvala
wiki Case sensitivity
Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 16.03.2010. u 20:48 · pre 202 meseca #16
ok...mi smo rekli da "ne bude" case sensitive...to je po tvojoj definiciji case insensitive koliko ja razumem...
nebitno mislim da smo se sad nasli :)
Re: c# comboBox pretraga 28.11.2016. u 12:52 · pre 120 meseci #18
Prošlo je 100god i meni zatreba ovaj kod pa da ga iskoristim i da dopišem problem kursora možete da riješite kao na ovom
linku.

portrebno je samo ispod
Code:
comboBox1.DroppedDown = true;

dodati
Code:

Cursor.Current = Cursors.Default;
Potpis
http://www.knjigaimena.com
Re: c# comboBox pretraga 29.11.2016. u 10:30 · pre 120 meseci #19
Generalno je ok resenje.
Mada mislim da, oni koji imaju potrebe da osnovne win forms kontrole nabudze sa svim feature-ima (poput ovog iznad), treba da razmisle o kupovini 3rd party kontrola.
Necu preporucivati konkretan proizvod, ali na trzistu postoje 3-4 ozbiljne firme koje se samo time bave.

Ja sam odvojio vreme i naucio jedan i mogu vam reci da je dosta lakse kad sve imas na dohvat ruke i samo podesis propertije..
Takodje primetio sam se da kad imas sve kontrole koje su ti potrebne, vise vremena se posvetis resavanju domenskog problema, a ne to kako ce biti obojen red u gridu koji ima vrednost kolne X izmedju 0 i 10 npr..

Ko ima projekte kome nije toliko bitan korisnicki UI, neka preskoci kupovinu.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme