0

Windowsフォームでは、テキストボックスに文字列の単純なリストを指定するか、強力な型指定された文字列のリストであるAutoCompleteCollectionのみにできるカスタムソースを指定することで、テキストボックスをオートコンプリートテキストボックスにすることができます。各文字列にキーを追加できるようにしたいので、提案が選択されたときはいつでもそのキーを取得できます。

空白を描いているだけかもしれませんが、誰か提案がありますか?前もって感謝します

4

2 に答える 2

2

クラス 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;
        }
    }

}
于 2010-02-15T23:49:28.670 に答える
0

私が正しく理解している場合は、テキスト ボックスの値 (自動で提案される可能性があります) に値を関連付けてください。テキストをキーとして、「キー」と呼んでいるものを値として を作成することで、これを行うことができDictionary<string, string>ます。TextBox特定の値の「キー」を見つけたいときはいつでもTextBox、辞書をチェックできます。

もちろん、TextBoxキーが必要な場合、a はデータを表現する最良の方法ではない可能性があります。キーが必要な場合は、ComboBox(を にDropDownStyle設定ComboBoxStyle.DropDownList) の方が適している可能性があります。

于 2010-02-15T23:50:02.887 に答える