如何实现模糊查询,并能自动显示下拉列表
答案:2 悬赏:80
解决时间 2021-03-13 00:02
- 提问者网友:心裂忍耐
- 2021-03-12 05:28
如何实现模糊查询,并能自动显示下拉列表
最佳答案
- 二级知识专家网友:星星坠落
- 2021-03-12 06:14
:1.用一个List listOnit存放初始化数据,用一个List listNew存放输入key之后,返回的数据。 2.用上面的listOnit初始化ComboBox数据源进行绑定。 3.在TextUpdate方法内部,添加实现方法。 首先进入方法,先清除ComboBox的内容,然后将输入的内容去
全部回答
- 1楼网友:一起来看看吧
- 2021-03-12 06:53
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;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯