0

在 Windows 窗体中,可以通过给它一个简单的字符串列表或给它一个只能是 AutoCompleteCollection 的自定义源,它是一个强类型的字符串列表,可以将一个文本框变成一个自动完成文本框。我希望能够为每个字符串添加一个密钥..只要选择任何建议,我都可以抓住该密钥。

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

4

2 回答 2

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

}
于 2010-02-15T23:49:28.670 回答
0

如果我理解正确,您希望文本框中的值(可以自动建议)具有关联的值。您可以通过创建一个Dictionary<string, string>TextBox文本为键并将您所称的“键”作为值的内容来做到这一点。每当您想找到特定TextBox值的“键”时,都可以在字典中查找它。

当然,TextBox如果必须有密钥,a 可能不是表示数据的最佳方式。如果必须有密钥,则ComboBox(with DropDownStyleset to ComboBoxStyle.DropDownList) 可能是更好的选择。

于 2010-02-15T23:50:02.887 回答