超难问题~搜遍互联网都没有解决方案~关于自动完成功能
c# ComboBox的自动完成功能只能实现从一个字符串头开始输入,比如有"1,123,124,234",这时候你输入1,会列出结果,但是我想实现全字符串的检索,就是比如,当输入2的时候,会列出来"123,124,234"这样的结果的时候,我没找到省事的方法,所以决定自己写一个控件。从ComboBox继承出来
网上这样的例子倒是也有,但是有个问题是,如果包含这个combox+listbox的组合控件的Winform比较小,就会出现显示不全的问题,也就是说弹出来的ListBox只能显示到winform的边缘。超出部分就没法显示了。
继续改良,用了ToolStripControlHost+ToolStripDropDown的办法,把这个listbox包含进去,这样就是顶层控件了吧,可好,显示的问题是解决了,但这个ToolStripDropDown在Show的时候会把Combox的焦点抢走,你本来想输入一串汉字,编输入遍列出检索结果,但一串汉字上去第一个字的时候,就触发了TextChange事件。然后失去焦点。十分不爽。
问:
1、如何让ListBox在不用ToolStripDropDown的时候仍然能不受winform的边界控制而显示完整?
2、如何让ToolStripDropDown在Show的时候不会抢走焦点?