Frage

In Windows -Formularen kann ein Textfeld in eine automatische Textbox gemacht werden, indem ihm eine einfache Liste von Zeichenfolgen oder eine benutzerdefinierte Quelle angegeben wird, die nur eine automatische Vervollständigungspunkte sein kann, bei der es sich um eine stark getippte Liste von Zeichenfolgen handelt. Ich möchte zu jeder Zeichenfolge einen Schlüssel hinzufügen können. Wenn ich also einen Vorschlag ausgewählt habe, kann ich diesen Schlüssel greifen.

Ich könnte nur einen Leerzeichen zeichnen. Aber hat jemand einen Vorschlag? Danke im Voraus

War es hilfreich?

Lösung

Die Klasse AutoCompletestringCollection ist nicht versiegelt, sodass Sie sicherlich daraus abgeleitet und eine Überladung von Add erstellen können, die zwei Parameter benötigt: einen Schlüssel und einen Wert.

Dann können Sie das in einem Wörterbuch verfolgen. Sie müssen die Zeichenfolge zweimal speichern (einmal in der Sammlung der Basisklasse und einmal in Ihrem Wörterbuch), können aber dann eine Suchmethode wie SO hinzufügen:

class KeyedAutoCompleteStringCollection : AutoCompleteStringCollection {

    private readonly Dictionary<string,string> keyedValues =
        new Dictionary<string,string>(StringComparer.OrdinalIgnoreCase);

    public void Add(string value, string key) {
        base.Add(value);
        keyedValues.Add(value, key); // intentionally backwards
    }

    public string Lookup(string value) {
        string key;
        if (keyedValues.TryGetValue(value, out key)) {
            return key;
        }
        else {
            return null;
        }
    }

}

Andere Tipps

Wenn ich Sie richtig verstehe, möchten Sie, dass der Wert im Textfeld (das automatisch vorgeschlagen werden kann) einen zugeordneten Wert haben. Sie könnten das tun, indem Sie a erstellen Dictionary<string, string> mit dem TextBox Text als Schlüssel und was Sie als "Schlüssel" als Wert bezeichnen. Wann immer Sie den „Schlüssel“ für eine bestimmte finden möchten TextBox Wert, Sie können das Wörterbuch dafür überprüfen.

Natürlich TextBox Möglicherweise ist nicht der beste Weg, um Ihre Daten darzustellen, wenn es einen Schlüssel geben muss. Wenn es einen Schlüssel geben muss, die ComboBox (mit DropDownStyle einstellen ComboBoxStyle.DropDownList) könnte eine bessere Option sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top