在Windows窗体中,可以将文本框设置为自动填充文本框,方法是为其提供一个简单的字符串列表,或者为其提供一个只能是自定义源的自定义源文件框。 AutoCompleteCollection,它是一个强类型的字符串列表。 我希望能够为每个字符串添加一个键。因此,无论何时选择任何建议,我都可以获取该密钥。
我可能只是在画一个空白..但是有人有建议吗? 提前致谢
答案 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
可能不是表示数据的最佳方式。如果必须有密钥,则ComboBox
(DropDownStyle
设置为ComboBoxStyle.DropDownList
)可能是更好的选择。