【问题标题】:Change the auto-complete behaviour of a textbox更改文本框的自动完成行为
【发布时间】:2013-09-13 08:26:19
【问题描述】:

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

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

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

【问题讨论】:

  • Winform、Wpf、Asp.net...?
  • Windows 窗体,谢谢..

标签: c# winforms autocomplete textbox selection


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我不确定是否要显示完整列表(也许组合框或类似的更适合此?)但您绝对可以执行this 之类的操作来交换可以显示的可能项目列表。

    另一种选择,虽然我不太喜欢,但是从集合中动态删除您不想在给定时间显示的项目,如下所示:textBox.AutoCompleteCustomSource.Remove("ACategoryTitle")

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

    【讨论】:

      【解决方案3】:

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

      如果您想要更体面的东西,CodingGorilla 的回答可能会带来更好的解决方案,就我而言,出于速度原因,我决定这样做,但我会将他的回答标记为已接受,以帮助其他有同样的疑问,他们可以考虑这一点..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        • 2023-03-21
        • 2011-04-18
        • 2010-09-22
        相关资源
        最近更新 更多