如何让C#文本框自动完成基于包含而不是以启动为基础提出建议?

时间:2014-11-17 19:00:56

标签: c# winforms windows-forms-designer

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

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

  • Jim Smith
  • Alice Walker
  • Bob Walker
  • 杰里米史密斯

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

例如:

text=J

会产生建议:

  • Jim Smith
  • 杰里米史密斯

但是,如果用户输入

text=Walk

没有结果。

如何完成内容以建议以下内容?

  • Alice Walker
  • Bob Walker

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

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

1 个答案:

答案 0 :(得分:3)

内置TextBox无法实现这一点。

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

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