Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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#_Winforms_Autocomplete_Textbox_Selection - Fatal编程技术网

C# 更改文本框的自动完成行为

C# 更改文本框的自动完成行为,c#,winforms,autocomplete,textbox,selection,C#,Winforms,Autocomplete,Textbox,Selection,我对C#中文本框的自动完成功能有两个疑问 首先,我想显示完整的列表,而不仅仅是以给定文本开头的列表,其次我想防止自动完成特定选项(有些是类别标题) 我一直在检查textbox属性,但没有任何相关内容,因此可能主要的问题是,是否有方法修改/覆盖textbox事件以处理自动完成操作?(我不知道它是否也适用于显示完整列表)我假设您询问的是winforms文本框,因为我认为WPF文本框根本不支持自动完成 基本TextBox类不支持做您想做的事情,因此理论上您可以尝试覆盖TextBox类中的所有功能来做您

我对C#中文本框的自动完成功能有两个疑问

首先,我想显示完整的列表,而不仅仅是以给定文本开头的列表,其次我想防止自动完成特定选项(有些是类别标题)


我一直在检查textbox属性,但没有任何相关内容,因此可能主要的问题是,是否有方法修改/覆盖textbox事件以处理自动完成操作?(我不知道它是否也适用于显示完整列表)

我假设您询问的是winforms文本框,因为我认为WPF文本框根本不支持自动完成


基本
TextBox
类不支持做您想做的事情,因此理论上您可以尝试覆盖
TextBox
类中的所有功能来做您想做的事情,但是更好的办法是创建一个新的自定义控件,该控件继承自
TextBoxBase
,并以您想要的方式实现自动完成行为。

我不确定是否要显示完整列表(可能组合框或类似的控件更适合此功能?)但您肯定可以做一些事情,比如交换可以显示哪些可能项目的列表

另一个选项(尽管我不太喜欢)是动态地从集合中删除您不希望在给定时间显示的项目,如下所示:
textBox.AutoCompleteCustomSource.remove(“ACategoryTitle”)


我可以预见,这种方法在不断重建列表时会遇到很多问题。我可能会创建一个
autocompletetestringcollection
的子类,它包装了一些LINQ代码,以很好地选择一些列表的并集,而不是其他列表的并集,以显示在文本框中。

我决定借助一个简单的列表框和事件来构建自己的自动完成工具,然后我就可以实现我所期望的


<如果你想要更体面的话,CONDIGRILLA的答案可能会导致更好的解决方案。在我的例子中,因为速度的原因,我决定这样做,但我会把他的答案标记为“接受”,以便帮助其他有同样疑虑的人,他们可以考虑这一点。

WINFLASH,WPF,ASP.NET……Windows窗体,谢谢。