C#如何将文本框建议列表添加到列表中?
e.g。说我做了
textBox1.AutoCompleteSource = AutoCompleteSource.FileSystemDirectories
要么
textBox1.AutoCompleteSource = AutoCompleteSource.RecentlyUsedList
和
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
我在文本框的弹出建议窗口中收到建议,但是我可以在列表中检索这些建议吗?
答案 0 :(得分:1)
您需要按以下方式设置TextBox
:
AutoCompleteStringCollection source = new AutoCompleteStringCollection();
// Add each item to the collection
source.Add("some string");
TextBox textBox = new TextBox();
textBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBox.AutoCompleteCustomSource = source;
然后,您可以通过执行以下操作来访问其他任何项目:
foreach(string item in textBox.AutoCompleteCustomSource)
{
Console.WriteLine(item);
}
或者你想要的,textBox.AutoCompleteSource现在被定义为实现IList
,ICollection
和IEnumerable
的类。因此,您可以使用任何可以访问List
,Collection
或Enumeration
的方法。它取决于你。
总结下面的评论,要访问除CustomSource
以外的任何内容的自动完成项目列表,您可能需要挂钩到Windows API,或者可能使用反射(尽管这不太可能,Windows API最有可能工作。)
答案 1 :(得分:0)
根据我的研究,我确实没有直接的方法来获取TextBox
控件的建议列表,AutoCompleteSource
设置为定义的值之一。
此问题的答案作者:How do I make the autocomplete list for a TextBox editable?建议阅读CP的文章:C# does Shell, Part 4,以便能够使用AutoComplete
扩展编辑框中的字符串。
答案 2 :(得分:-1)
达到此结果:
你可以按照两种方式,第一种是环境属性选项卡和 设置以下属性:
最好的方法是通过代码创建此效果,请参阅以下示例:
AutoCompleteStringCollection sourceName = new AutoCompleteStringCollection();
foreach (string name in listNames)
{
sourceName.Add(name);
}
txtName.AutoCompleteCustomSource = sourceName;
txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;