ComboBox自动完成功能的改进

shamohai5566 2013-09-11 12:37:49
大家好,我想实现在ComboBox的文本框中输入字符串,可以模糊搜索,定位到符合条件的Item的功能。我知道ComboBox有AutoCompleteMode及AutoCompleteSource属性可以设置自动完成功能,但是检索字符串只从开始位置检索,我想实现只要某个Item的文本中任何位置包含输入字符串就可以匹配。

于是我在TextUpdate事件中获取当前ComboBox.Text,展开ComboBox的下拉框,再从Items中查找第一个包含该字符串的Item,我现在的问题是:相应Item找到了,但是我无法实现Item的鼠标悬浮于状态(高亮,但不是SelectedItem=x),请高手们帮忙。或者帮我指导一下其它实现方案,不胜感激
...全文
197 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2013-09-11
  • 打赏
  • 举报
回复
这个自己变通一下,搞一个list,然后循环list将内容加到combox,combx中输入时,遍历list,把包含输入内容的记录选出了,加到combox
threenewbee 2013-09-11
  • 打赏
  • 举报
回复
默认的ComboBox自带的自动完成功能,是操作系统实现的。 在Windows Vista以前,这种匹配无法自定义,所以什么根据拼音找数据,根据关键字找数据都不能实现,只能根据前缀匹配。在Vista和以后,可以自定义过滤,但是.NET出于兼容性的考虑,没有在类库层次上引入,必须使用API。 http://msdn.microsoft.com/en-us/library/windows/desktop/bb762479(v=vs.85).aspx ACO_NOPREFIXFILTERING 0x0100. Windows Vista and later. Disable prefix filtering when displaying the autosuggest dropdown. Always display all suggestions.
灬浪子灬 2013-09-11
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
这个自己变通一下,搞一个list,然后循环list将内容加到combox,combx中输入时,遍历list,把包含输入内容的记录选出了,加到combox
在textchanged中去处理绑定的list 用linq处理list
人生导师 2013-09-11
  • 打赏
  • 举报
回复
这个你可以自己要画Combobox中的Item,可以在ComboboxDrawItem事件中自己画Combobox中的项目,这样就可以自定义高亮颜色。,具体可以参考下面的帖子: http://stackoverflow.com/questions/11649803/change-the-selection-color-of-a-winforms-combobox

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧