C#如何将文本框建议列表放入列表<string>?

时间:2016-05-07 19:29:03

标签: c# autosuggest

C#如何将文本框建议列表添加到列表中?

e.g。说我做了

textBox1.AutoCompleteSource = AutoCompleteSource.FileSystemDirectories 要么     textBox1.AutoCompleteSource = AutoCompleteSource.RecentlyUsedList

textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

我在文本框的弹出建议窗口中收到建议,但是我可以在列表中检索这些建议吗?

3 个答案:

答案 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现在被定义为实现IListICollectionIEnumerable的类。因此,您可以使用任何可以访问ListCollectionEnumeration的方法。它取决于你。

总结下面的评论,要访问除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)

达到此结果:

enter image description here

你可以按照两种方式,第一种是环境属性选项卡和 设置以下属性:

enter image description here

最好的方法是通过代码创建此效果,请参阅以下示例:

AutoCompleteStringCollection sourceName = new AutoCompleteStringCollection();

foreach (string name in listNames)
{    
    sourceName.Add(name);
}

txtName.AutoCompleteCustomSource = sourceName;
txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;