中易网

如何实现模糊查询,并能自动显示下拉列表

答案:2  悬赏:80  
解决时间 2021-03-13 00:02
如何实现模糊查询,并能自动显示下拉列表
最佳答案
:1.用一个List listOnit存放初始化数据,用一个List listNew存放输入key之后,返回的数据。 2.用上面的listOnit初始化ComboBox数据源进行绑定。 3.在TextUpdate方法内部,添加实现方法。 首先进入方法,先清除ComboBox的内容,然后将输入的内容去
全部回答
1.用一个list listonit存放初始化数据,用一个list listnew存放输入key之后,返回的数据。 2.用上面的listonit初始化combobox数据源进行绑定。 3.在textupdate方法内部,添加实现方法。 首先进入方法,先清除combobox的内容,然后将输入的内容去listonit初始化的数据中比对,找出对应数据,然后放入listnew存放数据,最后将listnew数据重新赋值给combobox。   后台代码实现: using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.windows.forms; namespace timerdemo {     public partial class form2 : form     {         //初始化绑定默认关键词(此数据源可以从数据库取)         list listonit = new list();         //输入key之后,返回的关键词         list listnew = new list();           public form2()         {             initializecomponent();         }           private void form2_load(object sender, eventargs e)         {             //调用绑定             bindcombobox();         }         ///         /// 绑定combobox         ///         private void bindcombobox()         {             listonit.add("张三");             listonit.add("张思");             listonit.add("张五");             listonit.add("王五");             listonit.add("刘宇");             listonit.add("马六");             listonit.add("孙楠");             listonit.add("那英");             listonit.add("刘欢");                            this.combobox1.items.addrange(listonit.toarray());         }           private void combobox1_textchanged(object sender, eventargs e)         {                        }           private void combobox1_textupdate(object sender, eventargs e)         {             //清空combobox             this.combobox1.items.clear();             //清空listnew             listnew.clear();             //遍历全部备查数据             foreach (var item in listonit)             {                 if (item.contains(this.combobox1.text))                 {                     //符合,插入listnew                     listnew.add(item);                 }             }             //combobox添加已经查到的关键词             this.combobox1.items.addrange(listnew.toarray());             //设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列             this.combobox1.selectionstart = this.combobox1.text.length;             //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。             cursor = cursors.default;             //自动弹出下拉框             this.combobox1.droppeddown = true;         }     } }     实现效果截图: 从左到右模糊查询:(例如输入:张) 可以得出正常模糊查询的结果。 从左到右模糊查询(例如输入:三) 实现过程中的问题:   1.绑定数据一开始用的datasource方式,但是写到下面重新给combobox设置数据源的时候,报错:不能为已经设置datasource的combobox赋值。       解决方式:将赋值方式改为:item.add(obj)或者item.addrange(obj)方式   2.下拉框的内容一直在增加       解决方式:当文本框文本改变时,清空下拉框的内容,然后再添加数据。   3.输入文本改变时,没有自动弹出下拉框显示已经查询好的数据。       解决方式:设置combobox的droppeddown 属性为true。   4.combobox文本框改变事件一开始选择用的是textchanged事件,但是当在界面用 上 下键盘选择时,出现bug,不能进行选择。       解决方式:将文本框改变事件换为textupdate事件,然后添加实现方法。   5.当在combobox输入内容时,内容文本是倒序输出的,光标位置始终在最前面。       解决方式:设置光标的显示位置,this.combobox1.selectionstart = this.combobox1.text.length;   6.输入内容改变时,用鼠标选择下拉列表项的时候,鼠标指针消失,被下拉框覆盖掉。       解决方式:设置鼠标状态为一开始的默认状态,cursor = cursors.default;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么客车司机那没门
理财选什么?
有《我在学校帮奶奶干活》日记
七雄争霸武将起名字
电脑上的主题为什么没有了
西湖新天地大草坪地址有知道的么?有点事想过
美渡造型地址在哪,我要去那里办事
劳动河大桥/诚郎路(路口)地址在哪,我要去那
宝泉岭局直中学和鹤岗一中 那个学校教的好一
手台对讲机50公里的需要多少钱
爱琴海地址在什么地方,想过去办事
西安英语培训机构哪家做的比较好?
浙江大学中文系副教授工资待遇
10元人民币背面的山是什么山?
华为8817e密码锁住了 我按了开机键和音量键
推荐资讯
请问下这珠子是什么材料的 谢谢
新世纪电动汽车城云舟电动汽车4S旗舰店我想知
阔盛ppr水管有人用过吗?会不会漏水?
dell venue11pro bios原厂设置表不知在那里可
奶茶加盟店一年能赚多少钱
如何处理回力鞋因为内部掉色而鞋面变黄?
御风s16这款车到底怎么样?
刘康熙,是谁?
原始股在收益上和普通股有什么差别
海尔洗衣机洗完不脱水直接进行漂洗
任丘有非师范教师资格证培训班吗
新版巨蝮蛇按上驱动以后就开始出现 鼠标不动
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?