C#中如何通过,TextBox+ListBox实现自动匹配功能?

 我来答
kas68310
2011-12-07 · TA获得超过3637个赞
知道大有可为答主
回答量:1468
采纳率:33%
帮助的人:1169万
展开全部
就像百度搜索框那种效果么?随便在文本中输入文本,然后在列表框中出现模糊匹配?
1.TextBox_TextChange事件,启动查询,SQL条件使用like模糊匹配
2.foreach遍历查询的结果,将结果加载至ListBox,在每次重新加载前清空列表
-------
数据多的话,最好在sql中加上top ?,即仅取前几行数据.
数据少的话,可以在窗体打开时就加载全部数据至集合,TextChange处理时遍历集合,查找包含输入文本的前N项,加载至列表框.
如果是B/S项目,需要ajax支持查询与加载列表框.
更多追问追答
追问
如何当删除textbox内的内容匹配值也随着改变,foreach遍历查询怎么写,没学过
追答
TextChange事件监控的是文本的变化,你追加或者退格都会启动.
///
/// 过滤——输入框文字改变
///
///
///
private void txtF_In_TextChanged(object sender, EventArgs e)
{
if (htSchNoLst.Count == 0)
{
return;
}

lbxF_Lst.Items.Clear(); //清空之前的匹配结果
int items = 0; //限制显示结果上限为10
foreach (object obj in htSchNoLst.Keys)
{
if (obj.ToString().Contains(txtF_In.Text.ToUpper()))
{
lbxF_Lst.Items.Add(obj.ToString());
items++;
}
if (items == 10)
{
break;
}
}
}
这是我项目中的一段代码,你可以看一下,业务就是查询到一堆单据后,将单据号加入集合,在文本框中输入单据号(不完全),,将包含输入内容的单据号前十个加载至列表框.
变量和控件都定义在方法外,不过应该不影响你看代码.
htSchNoLst是一个hashtable,key是单据号,value是绑定至datagridview后某个单据的首行索引
列表框点击的效果是,datagridview定位至这个单据的首行.
-------这个就是预加载的例子.
百度网友2cdb4e3
2011-12-07 · 超过25用户采纳过TA的回答
知道答主
回答量:175
采纳率:0%
帮助的人:77.2万
展开全部
你可以用ListBox中的selectchange事件进行操作,获得ListBox选择的值,然后付给listbox。同样,反过来也可以实现的
更多追问追答
追问
具体代码怎么写
追答
你要建的是什么程序?都是很简单的操作,你看一下控件的事件就会了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式