DropDown-Combobox: Suchfunktion einbauen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DropDown-Combobox: Suchfunktion einbauen

    Hallo

    Hab diesen Forum glücklicherweise über google gefunden und mich gleich registriert ;)
    Hab hier ein kleines Problemchen bei Comboboxen. Ich habe mehrere Comboboxen und alle Comboboxen haben folgende Eigenschaften:

    AutoCompleteMode: Suggest
    AutoCompleteSource: ListItems
    DropDownStyle: DropDown
    Items: Über tausende einzelne items (Alle Items bei allen Comboboxen gleich!)


    Okay ich brauche jetzt dringend eine Suchfunktion in den Comboboxen dass beim tippen, Items vorschlägt die in der Combobox schon als Item hinzugefügt wurden. Dank den Eigenschaften die ich oben gepostet habe, funktioniert alles Super! Ich gebe ein Wort ein, er schlägt mir alle Items vor die das selbe Wort haben.

    Nurr komme ich hier nicht weiter: Da die Comboboxen ja im DROPDOWN Style sind, lässt er die eingegebenen Wörter so stehen wie man sie hinschreibt. Ich will aber dass wenn man ein Wort schreibt, dass GAR NICHT in der Combobox vorhanden ist, dass mein Programm dann den Wort löscht und eine MSGBOX anzeigt mit zb: Unbekanntes Item oder sowas.

    Ich hab leider keine Ahnung wie ich das Coden soll. In den "Leave" Events der Comboboxen villeicht oder ähnliche Events was fürs FERTIG GESCHRIEBEN wären, könnte ich ja die funktion hincoden dass er es löscht sobald das geschrieben Wort nicht mit eins von den Items gleich ist.
    Aber ich weiß nur nicht wie ich DAS coden soll ...

    Könnte mir bitte jemand helfen? Wie kann ich fragen ob combobox.text das selbe wie irgendein Iteme von der Combobox ist???

    PS: Sufu hab ich schon mehrmals benutzt aber hab einfach nicht das richtige gefunden :(

    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SEX“ ()

    Jo, interessantes Problem: ergonomische Auswahl aus einer sortierten Text-Liste mit über 1000 Elementen.

    Habich vor einiger Zeit eine Lösung zu gemacht, ist aber sehr komplex und in Wpf.

    Das Prinzip geht so:
    Alle worte werden in einen Baum eingelesen. Also wenn 2 Worte sich erst ab dem 7.Buchstaben unterscheiden, dann kommen sie in einen Ordner (der die 7 gemeinsamen Buchstaben bedeutet).
    In der Listbox werden nun entweder diese Ordner angezeigt, oder die TextItem - zB Namen.
    Also auf Oberster Ebene erhält man bei 10000 Namen vmtl. alle Buchstaben als Ordner.
    Geht man in "M", so sind darin vlt. nurnoch 200. Aber die sind auch nicht einfach komplett gelistet, sondern ge"ordnert", in Ordner wie "Ma", "Me", "Mü" etc.
    Erst in "Mü" finden sich dann die letztlichen Namen, wie "Mühlmann", "Müller", und in "Me" findter "Meier", "Meyer" und dergleichen.

    Ausserdem wende ich das Prinzip "Rückverflachung" an - also wenn in einem Ordner nur wenige Namen oder UnterOrdner drinne sind, dann kann ich den Ordner ja auflösen, und seinen Inhalt 1 Ebene drüber direkt anzeigen.
    Also wenn wirklich nur die o.g. 4 Namen verfügbar sind, dann würden die Ordner "Me" und "Mü" natürlich rückverflacht, und die Namen direkt angezeigt im Ordner "M".

    So habe ich immer eine gut gefüllte, aber nicht übervolle Listbox, und mit ca. 4 Klicks hat man auch in 10000 Namen einen bestimmten ausgewählt.
    Wohlgemerkt: ausgewählt - freie (Fehl-)Eingaben sind nicht möglich.

    Wie gesagt: ziemlich komplex, und eine Standard-Lösung ist mir bisher nicht bekannt, sonst hätte ich meine nicht mir ausgedacht.




    naja - im Grunde OffTopic.
    also feststellen, ob ein String in einer List(Of String) enthalten ist?
    List(Of T).Contains gibt dir diese Auskunft.

    Sagich heute schon zum 3. Mal: Ist immer schlecht, direkt auf Listboxen und Comboboxen rumzuorgeln.
    Tu deine Daten in eine List(Of T), wo du sie gescheit verarbeiten kannst.
    An die List(Of T) kannst du deine Comboboxen binden.
    ZB in Keine Strings in die File-Listbox! ist eine Listbox an eine List(Of FileInfo) gebunden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    Jo, interessantes Problem: ergonomische Auswahl aus einer sortierten Text-Liste mit über 1000 Elementen.

    Habich vor einiger Zeit eine Lösung zu gemacht, ist aber sehr komplex und in Wpf.
    Okay vielen dank für die nützlichen Infos. WPF ist nix für mich ...
    Kannst du mir villeicht sagen ob mein Wunsch wenigstens mit 20-30 Items möglich???