Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Combobox welches mehrere Tasteneingaben abwartet
thomae
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

Combobox welches mehrere Tasteneingaben abwartet

beantworten | zitieren | melden

Hallo Leute

ich brauche wieder mal Eure Hilfe.

Ich suche einen möglichst einfachen Weg eine Combobox so abzuändern, dass ich beispielsweise 3 Buchstaben schnell nacheinander eingeben kann und diese dann als 1 Token mit allen vorhandenen Items vergleichen kann und so dass richtige finden kann.

Anwendungsbeispiel:

Ich habe eine Combobox mit allen Ländern dieser Welt und möchte jetzt so schnell wie möglich zum Item Ausstralien springen. Dazu möchte ich die Buchstaben "AUS" eingeben und anschliessend zu richtigen Item springen..

Irgend eine clevere Idee? Wäre fantastisch

Gruess

Thomä
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo thomae,

ich denke, du benötigst eine ComboBox und
arbeitest u.a. mit den Membern

.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
.AutoCompleteSource = AutoCompleteSource.CustomSource;
.AutoCompleteCustomSource = new AutoCompleteStringCollection();
.AutoCompleteCustomSource.AddRange(...);
.DropDownStyle = ComboBoxStyle.DropDown;

Bei DataBinding auch noch z.B. mit
.DataBindings
.DataSource
.DisplayMember
.ValueMember

thomae, bist Du aus Biberach ?

Gruß Hape
private Nachricht | Beiträge des Benutzers
thomae
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

Hallo Hape

danke für deinen Input. Bisher arbeite ich mit einer DropDownList, da ich verhindern möchte, dass der Benutzer Dinge eingeben kann die nicht funktionieren.

Die DataBindings verwende ich so wie von dir erwähnt..

Kannst du mir folgende Punkte noch etwas erläutern:

.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
.AutoCompleteSource = AutoCompleteSource.CustomSource;
.AutoCompleteCustomSource = new AutoCompleteStringCollection();
.AutoCompleteCustomSource.AddRange(...);

Nö bin aus der Schweiz - Biel..

Gruess Thomä
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Hi Thomae,
DropDownList geht nicht mit AutoCompleteMode = AutoCompleteMode.SuggestAppend zusammen.
Um zu verhindern, dass die User nix ungültiges eingeben, würde ich das Validating Event verwenden.
Gruß Hape
private Nachricht | Beiträge des Benutzers
thomae
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

Jep habs bemerkt..

Funktioniert bestens.
Habe es mit databinding gelöst und anschliessend den Validating Event verwendet..


private void cboCountry_Validating(object sender, CancelEventArgs e)
{
	if(((ComboBox)sender).Text.Length > 0)
	{
		string text = ((ComboBox)sender).Text.ToUpper();	
		bool valueFound = false;
		for(int i = 0; i < ((ComboBox)sender).Items.Count; i++)
		{
		  	if(((ComboBox)sender).Items[i].ToString().CompareTo(text) == 0)
			{
				valueFound = true;
				break;
			}
		}
		if(!valueFound)
		{
			e.Cancel = true;
		}
	}
}



private void dbReadCountries()
{
    try
    {
        this.countryArrayList.Clear();
		
		IDbCommand oraCmd = OracleDBManager.Instance.CreateDbCommand();
        oraCmd.CommandText = "SELECT * FROM COUNTRIES ORDER BY COUNTRY";
		using (IDataReader or = OracleDBManager.Instance.ExecuteReader(null, oraCmd))
		{
			while (or.Read())
			{
				this.countryArrayList.Add(new CountryItem(or["COUNTRY"].ToString(), or["	code"].ToString()));
			}
		}
        // binding DataSource to Combobox 
		
        this.cboCountry.DataSource = null;
        this.cboCountry.DisplayMember = "Text";
        this.cboCountry.ValueMember = "Name";
        this.cboCountry.DataSource = countryArrayList;
		string[] autoCompletion = new string[countryArrayList.Count];
		for(int i = 0; i < countryArrayList.Count; i++)
		{
			autoCompletion[i] = this.cboCountry.Items[i].ToString();
		}

		this.cboCountry.AutoCompleteCustomSource = new AutoCompleteStringCollection();
		this.cboCountry.AutoCompleteCustomSource.AddRange(autoCompletion);	
    }
    catch (System.Exception ex)
    {
        
    }
}

private Nachricht | Beiträge des Benutzers
thomae
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

Danke noch mal
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Klasse!
private Nachricht | Beiträge des Benutzers