C# 更改文本框的自动完成行为
我对C#中文本框的自动完成功能有两个疑问 首先,我想显示完整的列表,而不仅仅是以给定文本开头的列表,其次我想防止自动完成特定选项(有些是类别标题)C# 更改文本框的自动完成行为,c#,winforms,autocomplete,textbox,selection,C#,Winforms,Autocomplete,Textbox,Selection,我对C#中文本框的自动完成功能有两个疑问 首先,我想显示完整的列表,而不仅仅是以给定文本开头的列表,其次我想防止自动完成特定选项(有些是类别标题) 我一直在检查textbox属性,但没有任何相关内容,因此可能主要的问题是,是否有方法修改/覆盖textbox事件以处理自动完成操作?(我不知道它是否也适用于显示完整列表)我假设您询问的是winforms文本框,因为我认为WPF文本框根本不支持自动完成 基本TextBox类不支持做您想做的事情,因此理论上您可以尝试覆盖TextBox类中的所有功能来做您
我一直在检查textbox属性,但没有任何相关内容,因此可能主要的问题是,是否有方法修改/覆盖textbox事件以处理自动完成操作?(我不知道它是否也适用于显示完整列表)我假设您询问的是winforms文本框,因为我认为WPF文本框根本不支持自动完成
基本
TextBox
类不支持做您想做的事情,因此理论上您可以尝试覆盖TextBox
类中的所有功能来做您想做的事情,但是更好的办法是创建一个新的自定义控件,该控件继承自TextBoxBase
,并以您想要的方式实现自动完成行为。我不确定是否要显示完整列表(可能组合框或类似的控件更适合此功能?)但您肯定可以做一些事情,比如交换可以显示哪些可能项目的列表
另一个选项(尽管我不太喜欢)是动态地从集合中删除您不希望在给定时间显示的项目,如下所示:textBox.AutoCompleteCustomSource.remove(“ACategoryTitle”)
我可以预见,这种方法在不断重建列表时会遇到很多问题。我可能会创建一个
autocompletetestringcollection
的子类,它包装了一些LINQ代码,以很好地选择一些列表的并集,而不是其他列表的并集,以显示在文本框中。我决定借助一个简单的列表框和事件来构建自己的自动完成工具,然后我就可以实现我所期望的
<如果你想要更体面的话,CONDIGRILLA的答案可能会导致更好的解决方案。在我的例子中,因为速度的原因,我决定这样做,但我会把他的答案标记为“接受”,以便帮助其他有同样疑虑的人,他们可以考虑这一点。 WINFLASH,WPF,ASP.NET……Windows窗体,谢谢。