Hallo,
in meiner Anwendung gibt es eine ComboBox im DropDown Style, welche an eine BindingList gebunden ist (alles integer). Da diese Liste recht lang sein kann, möchte ich, dass man nicht durch eine ewig lange DropDownListe scrollen muss, sondern im Textfeld die Werte auch direkt eingeben kann, allerdings nur die, die es in der BindingSource auch gibt. Nun meine Frage: wie fange ich ab, wenn ein Benutzer einen nicht existenten Wert eingibt, ohne gleich die ganze Liste durchsuchen zu müssen. Gibt es da ein event, das ich verwenden könnte. Stehe etwas auf dem Schlauch gerade.
Code:
private BindingList<CheckBoxItem> nodes;
nodes = new BindingList<CheckBoxItem>();
this.cmbSupportNode.DataSource = nodes;
this.cmbSupportNode.DisplayMember = "Name";
this.cmbSupportNode.ValueMember = "Value";
this.cmbSupportNode.DataBindings.Add(new Binding("SelectedValue", this.data, "ire"));
Danke, Alex
Final no hay nada más
Hallo ill_son
Du kannst die Liste einfach Filtern nach dem Text. Wird etwas nicht vorhandenes eingegeben, ist die Auswahl in der ComboBox leer.
Beste Grüsse
Diräkt
Hallo ill_son,
lass den Benutzer eingeben, was er will und prüfe erst am Ende, also z.B. im Validating.
Hat der Benutzer etwas eingegeben, was in der Liste vorhanden ist, dann dann sollte ein Eintrag selektiert sein und wenn nicht dann nicht.
Wenn man sich generell und unabhängig vom GUI die Frage stellt, ob ein Eintrag in einer Liste vorhanden ist, kommt es darauf an.
Wenn die Liste sortiert ist, kann man binäre Suche verwenden.
Wenn man die Liste nicht sortiert ist, aber man sie nur einmal oder nur weniger Male durchsuchen muss oder sie relativ klein ist, kann man lineare Suche verwenden.
Wenn die Liste groß ist, aber man sie häufig oder sehr häufig durchsuchen muss, sollte man alle Werte aus der Liste in ein HashSet packen. Dann kann man mit HashSet.Contains in konstanter Zeit (also unabhängig von der Größe der Liste) ermitteln, ob ein Wert enthalten ist.
herbivore
Wie wäre es mit AutoComplete? Weitere Infos auch bei MSDN ComboBox.AutoCompleteMode-Eigenschaft
Wie bei dem Beispiel AutoComplete ComboBox in Visual C# 2010 gezeigt, werden die Benutzereingaben schon passend vorgefiltert.
Hey raiguen,
vielen Dank für den Tipp. Auf AutoComplete bin ich bei weiterm Rumprobieren nun auch gestoßen. Das gefällt mir. In Verbindung mit einem ErrorProvider ist das, denke ich, eine gute Lösung.
Grüße, Alex
Final no hay nada más