Windowsフォームでは、テキストボックスに文字列の単純なリストを指定するか、強力な型指定された文字列のリストであるAutoCompleteCollectionのみにできるカスタムソースを指定することで、テキストボックスをオートコンプリートテキストボックスにすることができます。各文字列にキーを追加できるようにしたいので、提案が選択されたときはいつでもそのキーを取得できます。
空白を描いているだけかもしれませんが、誰か提案がありますか?前もって感謝します
Windowsフォームでは、テキストボックスに文字列の単純なリストを指定するか、強力な型指定された文字列のリストであるAutoCompleteCollectionのみにできるカスタムソースを指定することで、テキストボックスをオートコンプリートテキストボックスにすることができます。各文字列にキーを追加できるようにしたいので、提案が選択されたときはいつでもそのキーを取得できます。
空白を描いているだけかもしれませんが、誰か提案がありますか?前もって感謝します
クラス AutoCompleteStringCollection はシールされていないため、確実に派生させて、キーと値の 2 つのパラメーターを受け取る Add のオーバーロードを作成できます。
次に、辞書でそれを追跡できます。文字列を 2 回 (基本クラスのコレクションに 1 回、辞書に 1 回) 保存する必要がありますが、次のようにルックアップ メソッドを追加できます。
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
キーが必要な場合、a はデータを表現する最良の方法ではない可能性があります。キーが必要な場合は、ComboBox
(を にDropDownStyle
設定ComboBoxStyle.DropDownList
) の方が適している可能性があります。