如何让 C# 文本框自动完成以基于包含而不是开头提出建议
本文关键字:于包含 开头 文本 | 更新日期: 2023-09-27 18:30:37
我的 C# Windows 窗体应用程序中有一个文本框,其中的自动完成模式设置为 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>
使用内置文本框无法做到这一点。
阅读参考源显示,自动完成功能调用本机函数 SHAutoComplete 来完成它的工作。那个只做前缀匹配。
您必须对 TextBox 进行子类化并提供您自己的建议功能(或购买一个/找到一个开源功能),才能做到这一点。