我对C#中文本框的自动完成功能有两个疑问。
首先,我想显示完整列表,不仅仅是以给定文本开头的列表,其次我想阻止特定选项的自动完成(有些是类别标题)。
我一直在查看文本框属性并且没有任何相关内容,所以可能主要问题可能是,是否有办法修改/覆盖文本框事件以处理自动完成操作? (我不知道它是否适用于显示完整列表)
答案 0 :(得分:1)
我假设您正在询问winforms文本框,因为我认为WPF文本框根本不支持自动填充。
基础TextBox
类不支持执行您想要的操作,因此理论上您可以尝试覆盖TextBox
类中的所有功能来执行您想要的操作,但更好的想法是是创建一个继承自TextBoxBase
的新自定义控件,并按照您希望的方式实现自动完成行为。
答案 1 :(得分:0)
我不确定是否显示完整列表(也许组合框或类似文件更适合这个?)但你绝对可以做this之类的事情来交换哪些可能的项目列表可以显示。< / p>
另一个选项,虽然我喜欢的一个选项,就是动态删除你不希望在给定时间从集合中显示的项目,如下所示:textBox.AutoCompleteCustomSource.Remove("ACategoryTitle")
我可以预见这种方法在尝试不断重建列表时会遇到很多问题。我可能会创建一个AutoCompleteStringCollection
的子类,它包含一些LINQ代码,可以很好地选择某些列表的并集,而不是在文本框中显示的其他列表。
答案 2 :(得分:0)
我决定在简单的列表框和事件的帮助下构建我自己的自动完成工具,然后我可以实现我的期望..
CodingGorilla的答案可能会导致一个更好的解决方案,如果你想要更体面的东西,在我的情况下出于速度原因,我决定这样做,但我会将他的答案标记为已被接受,以帮助其他人同样的疑问,他们可以考虑这一点..