Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何将文本框建议列表放入列表<;字符串>;?_C#_Autosuggest - Fatal编程技术网

C#如何将文本框建议列表放入列表<;字符串>;?

C#如何将文本框建议列表放入列表<;字符串>;?,c#,autosuggest,C#,Autosuggest,C#如何将文本框建议列表放入列表中 e、 说我喜欢 textBox1.AutoCompleteSource=AutoCompleteSource.FileSystemDirectories 或 textBox1.AutoCompleteSource=AutoCompleteSource.RecentlyUsedList 及 textBox1.AutoCompleteMode=AutoCompleteMode.SuggestAppend 我在文本框的弹出建议窗口中得到建议,但我可以在列表中检索这些

C#如何将文本框建议列表放入列表中

e、 说我喜欢

textBox1.AutoCompleteSource=AutoCompleteSource.FileSystemDirectories
textBox1.AutoCompleteSource=AutoCompleteSource.RecentlyUsedList

textBox1.AutoCompleteMode=AutoCompleteMode.SuggestAppend


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

您将希望以以下方式设置
文本框

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
的类。因此,您可以使用访问
列表
集合
枚举
的任何方法。这取决于你


要总结下面的评论,要访问auto complete中除自定义源代码之外的任何内容的项目列表,您可能需要连接到Windows API,或者使用反射(虽然这不太可能,但Windows API最有可能工作)。

根据我的研究,我确实认为,如果将
AutoCompleteSource
设置为定义的值之一,就无法直接获得
TextBox
控件的建议列表

该问题答案的作者:建议阅读CP的文章:能够使用
AutoComplete
展开编辑框中编写的字符串。

要获得此结果:

您可以采用两种方法,第一种是“按环境属性”选项卡,第二种是“按环境属性” 设置以下属性:

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

AutoCompleteStringCollection sourceName = new AutoCompleteStringCollection();

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

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


请查看MSDN文档:AutoCompleteSource是字符串的集合;)@MaciejLos这是一个枚举。我不知道如何获取IEnumerable或Array中的字符串。你是说
文件系统目录
最近使用的列表
?那么,是否要获取这些值?可以使用for循环遍历枚举。@gmiley遍历RecentlyUsedList枚举是否会生成一组字符串,每个字符串都是一个路径?如果是这样的话,那么我愿意。如果不是,那么不,我不想。我可以让它工作`foreach(textBox.AutoCompleteCustomSource中的字符串项)tb.Text+=item;`但我无法让它在`foreach(textBox.AutoCompleteSource中的字符串项)tb.Text+=item;`e、 g.如果AutoCompleteSource可能不是自定义的。
AutoCompleteSource
只是定义
TextBox
将使用哪种源的属性,它不包含在用户键入时向其显示的任何自动完成项
AutoCompleteCustomSource
是包含项目列表的内容。看看MSDN条目,它提供了一个值列表,可以分配给
AutoCompleteSource
:因此,您的列表只适用于自定义列表,我可以使用自定义列表,甚至不需要从文本框中获取它。但是,当建议不是定制的时候,它不会得到建议。。e、 g.当建议是,例如,
AutoCompleteSource.RecentlyUsedList
时,我认为在使用
RecentlyUsed
选项时,无法访问列表。您可能可以使用
反射查看某些内容,但我建议您使用
CustomSource
选项并自己存储/填充列表。当列表是自定义列表时,从textbox建议窗口获取它没有任何好处,因为自定义列表是我构建的,所以我会拥有该列表。我的问题是给出最近使用的(你认为不可能)和目录
AutoCompleteSource.FileSystemDirectories
c第1部分的一位评论员的例子#tatworth提到的shell评论你认为该代码项目中的代码有危险吗?@barlop,不客气。使用本文作者Think提供的代码没有危险。今天,一个.net框架有许多安全更新未被屏蔽。你能解释一下链接所说的危险是什么,以及为什么它不适用于该代码项目作者的代码吗?该项目第1部分中的一堆链接也被破坏了。e、 g.他说,先决条件是阅读
Shell程序员指南
Shell基础知识
Shell名称空间
以及其他一系列的msdn链接,它们都是断开的链接。从这里开始阅读《Shell开发者指南》
:当你键入相关MSDN文章的标题时,其他链接可以通过谷歌获得。我已经有一段时间没有研究过这一点了,但你在这里发布的部分内容与gsmiley的建议非常相似,而且看起来我对此有异议,你解决了这些问题吗?@barlop我指定了两种方法。通过IDE和代码。答案是不同的,对我来说是更澄清的。如果你按照建议阅读关于另一个答案的评论,那么你会看到我写的“所以你的一个只适用于自定义列表,我可以拥有它,甚至不需要从文本框中获取它。但是,当建议不是定制的时候,它不会得到建议。。e、 g.当建议有效时,例如AutoCompleteSource.RecentlyUsedList“我看了看你的代码,上面写着
txtName.AutoCompleteSource=AutoCompleteSource.CustomSource
在您的GUI示例中表示了一个等价的东西,引用的是自定义源代码而不是最近使用的列表。因此,您的答案并没有解决我在另一个答案中提到的问题,只是与它共享了这个问题。