オートコンプリートテキストボックスコレクション
-
20-09-2019 - |
質問
Windowsでテキストボックスは、それを単純な文字列のリストを与えることによって、またはそれに唯一できるカスタム源を与えることによって、オートコンプリートのテキストボックスにすることができる構成 文字列の強い型指定されたリストであるAutoCompleteCollection。 私は、任意の提案が、私はそのキーをつかむことができ、選択されるたびに、各string..soにキーを追加できるようにしたいと思います。
私は誰もが提案を持っているんblank..butを描くかもしれませんか? 事前に感謝します。
解決
あなたはそれから派生し、2つのパラメータを取ります追加のオーバーロードを作成することができるように、確かにクラスAutoCompleteStringCollectionが封入されていません:。キーと値を
次に、あなたが辞書にそれを追跡することができます。あなたが二回(一回基本クラスのコレクションでは、一度自分の辞書で)文字列を格納する必要がありますが、あなたはそのようにようlookupメソッドを追加することができます:
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;
}
}
}
他のヒント
、あなたは(自動提案することができます)テキストボックスに値が関連付けられた値を持っていると思います。あなたは、キーと何を値として「キー」と呼んでいるようDictionary<string, string>
テキストとTextBox
を作成することによって、それを行うことができます。あなたが特定のTextBox
値のための「キー」を検索したいときはいつでも、あなたはそれのために辞書を確認することができます。
もちろん、TextBox
は、キーがなければならない場合は、あなたのデータを表現するための最良の方法ではないかもしれません。 (ComboBox
に設定DropDownStyle
付き)キー、ComboBoxStyle.DropDownList
がなければならない場合は、より良い選択肢かもしれません。