Autokapost "Textbox Collection"
-
20-09-2019 - |
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
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.