【问题标题】:How can I get C# textbox autocomplete to make suggestions based on contains rather than starts with?如何让 C# 文本框自动完成以基于包含而不是开头提出建议?
【发布时间】:2015-01-14 18:58:18
【问题描述】:

我的 C# Windows 窗体应用程序中有一个文本框,它的 AutoCompleteMode 设置为 AutoCompleteMode.Suggest,我的内容源是自定义源。

我的内容源是自定义的,具有以下值:

  • 吉姆·史密斯
  • 爱丽丝·沃克
  • 鲍勃·沃克
  • 杰里米·史密斯

只有通过检查建议的项目是否“以”文本框中的值“开头”,内容完成才会起作用。

例如:

text=J

会产生建议:

  • 吉姆·史密斯
  • 杰里米·史密斯

但是,如果用户输入

text=Walk

没有结果。

我怎样才能完成内容以提出以下建议?

  • 爱丽丝·沃克
  • 鲍勃·沃克

另外,我的最终目标是拥有一个文本框,个人可以在其中轻松开始输入电子邮件地址。自动完成建议的内容将是姓名 + 电子邮件地址。例如:

- Jim Smith <jsmith@mycorp.com>
- Alice Walker <alice@some.email.com>
- Bob Walker <bob.walker@mycorp.com>
- Jeremy Smith <jeremys@foo.com>

【问题讨论】:

标签: c# winforms windows-forms-designer


【解决方案1】:

这对于内置的 TextBox 是不可能的。

阅读reference source 会发现自动完成功能调用本机函数SHAutoComplete 来完成它的工作。那个只做前缀匹配。

您必须继承 TextBox 并提供您自己的建议功能(或购买一个/找到一个开源的),才能做到这一点。

【讨论】:

    猜你喜欢
    • 2015-06-23
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多