自动填充文本框集合

时间:2010-02-15 23:35:09

标签: c# textbox autocomplete autocompletebox

在Windows窗体中,可以将文本框设置为自动填充文本框,方法是为其提供一个简单的字符串列表,或者为其提供一个只能是自定义源的自定义源文件框。 AutoCompleteCollection,它是一个强类型的字符串列表。 我希望能够为每个字符串添加一个键。因此,无论何时选择任何建议,我都可以获取该密钥。

我可能只是在画一个空白..但是有人有建议吗? 提前致谢

2 个答案:

答案 0 :(得分:2)

AutoCompleteStringCollection类没有被密封,所以你当然可以从它派生并创建一个Add的重载,它带有两个参数:一个键和一个值。

然后你可以在字典中跟踪它。你必须将字符串存储两次(一次在基类的集合中,一次在你的字典中),但是你可以添加一个这样的查找方法:

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;
        }
    }

}

答案 1 :(得分:0)

如果我理解正确,您希望文本框中的值(可以自动建议)具有关联值。您可以通过创建Dictionary<string, string>并将TextBox文本作为键,以及将“key”称为值来创建。每当您想要找到特定TextBox值的“密钥”时,您可以检查它的字典。

当然,如果必须有密钥,TextBox可能不是表示数据的最佳方式。如果必须有密钥,则ComboBoxDropDownStyle设置为ComboBoxStyle.DropDownList)可能是更好的选择。