当前位置:编程学习 > C#/ASP.NET >>

ComboBox自动完成功能的改进

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

于是我在TextUpdate事件中获取当前ComboBox.Text,展开ComboBox的下拉框,再从Items中查找第一个包含该字符串的Item,我现在的问题是:相应Item找到了,但是我无法实现Item的鼠标悬浮于状态(高亮,但不是SelectedItem=x),请高手们帮忙。或者帮我指导一下其它实现方案,不胜感激 combobox 自动完成  任意位置 --------------------编程问答-------------------- 默认的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.
--------------------编程问答-------------------- 这个自己变通一下,搞一个list,然后循环list将内容加到combox,combx中输入时,遍历list,把包含输入内容的记录选出了,加到combox --------------------编程问答-------------------- 这个你可以自己要画Combobox中的Item,可以在ComboboxDrawItem事件中自己画Combobox中的项目,这样就可以自定义高亮颜色。,具体可以参考下面的帖子:
http://stackoverflow.com/questions/11649803/change-the-selection-color-of-a-winforms-combobox --------------------编程问答-------------------- --------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
这个自己变通一下,搞一个list,然后循环list将内容加到combox,combx中输入时,遍历list,把包含输入内容的记录选出了,加到combox

在textchanged中去处理绑定的list
用linq处理list
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,