c# 实现ComboBox自动模糊匹配
ComboBox自带有属性可以实现自动匹配,但是它有一个弊端,只能从头开始匹配,例如"李四LS",只能输入“李四”或"李"才能匹配出来,而输入"LS"是找不出来的。
绑定到ComboBox的下拉选项中的后台数据:
string[] data = new string[] { "张三|ZS", "李四|LS", "王五|WW", "赵六|ZL", "田七|TQ" };
先展示如何通过AutoComplete实现自动匹配
comAutoSelect.Items.AddRange(data);
comAutoSelect.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comAutoSelect.AutoCompleteSource = AutoCompleteSource.ListItems;
这样,在前台输入"张三"会自动匹配出下拉选项"张三|ZS",输入"ZS",没有其他下拉选项。
手动绑定是通过TextUpdate来实现,这里也考虑过TextChanged事件来实现,但是TextChanged事件和DroppedDown = true,以及键盘的上下键选择有冲突,因此选用TextUpdate事件。
comAutoSelect.Items.AddRange(data);
comAutoSelect.TextUpdate += (a, b) =>
{
var input = comAutoSelect.Text.ToUpper();
comAutoSelect.Items.Clear();
if (string.IsNullOrWhiteSpace(input)) comAutoSelect.Items.AddRange(data);
else
{
var newList = data.Where(x => x.IndexOf(input, StringComparison.CurrentCultureIgnoreCase) != -1).ToArray();
comAutoSelect.Items.AddRange(newList);
}
comAutoSelect.Select(comAutoSelect.Text.Length, 0);
comAutoSelect.DroppedDown = true;
//保持鼠标指针形状
Cursor = Cursors.Default;
};
主要的思路是当前台的文字改变时,刷新Items属性。有几个要注意。
1.不能用DataSource,因为绑定数据之后就不行对Items执行clear和add事件;另外,绑定数据后会默认选择第一行,如果需要输入多个字符,这样会产生全选,覆盖的输入效果。
2.在完成外Items的赋值后,执行comAutoSelect.Select(comAutoSelect.Text.Length, 0);将光标移到输入的最后,否则输入的文字会跟理想的字符串倒序。将光标移到最后可以用以下两种方法:
comAutoSelect.Select(comAutoSelect.Text.Length, 0);
comAutoSelect.SelectionStart = comAutoSelect.Text.Length;
3.可能对DroppedDown赋值的影响,光标被覆盖在界面下面了。需要增加一句Cursor = Cursors.Default;保持鼠标指针的形状。
TextUpdate的方法,实现了ComboBox模糊查找,自动匹配的效果。
文中的错漏,请回复纠正。
转载请注明出处:http://www.cnblogs.com/icyJ
c# 实现ComboBox自动模糊匹配的更多相关文章
- ExtJs combobox支持模糊匹配
其实很简单,我们只需要在创建下拉框时,给下拉框添加一个监听事件,代码如下: //以下监听事件用于对下拉项进行模糊匹配 ,listeners:{ ...
- Ext.js Combobox 输入模糊匹配
前台页面 aspx: 数据源: <ext:Store ID="storeJF" runat="server" AutoLoad="true&qu ...
- 转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果
是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题 ...
- EasyUi模糊匹配搜索框combobox
现在项目当中很多已经应用了Jquery-easyUi这个界面框架了,所以,学习一点easyUI的常用工具就显得很重要了,现在介绍的就是我在项目中用到的easyUi的模糊匹配组合框combobox. c ...
- combobox实现模糊查询自动填充
利用winform设计软件界面时,经常用到combobox控件,但有时需要绑定数据表中的数据,更进一步,需要实现对数据表中数据的模糊查询功能.本文就讲讲述如何用C#实现combobox下拉列表的模糊查 ...
- 【搜索引擎】 PostgreSQL 10 实时全文检索和分词、相似搜索、模糊匹配实现类似Google搜索自动提示
需求分析 要通过PostgreSQL实现类似Google搜索自动提示的功能,例如要实现一个查询海量数据中的商品名字,每次输入就提示用户各种相关搜索选项,例如淘宝.京东等电商查询 思路 这个功能可以用 ...
- EasyUI combobox下拉列表实现搜索过滤(模糊匹配)
项目中的某个下拉列表长达200多个项,这么巨大的数量一个一个找眼镜都得看花,于是就得整了个搜索功能.看网上别人帖子有只能前缀匹配的方案,但只能前缀匹配的话用起来也不是很方便.于是就记录一下模糊匹配的方 ...
- 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]
本次给大家带来的EasyUI的我研究拓展的新特性 我使用的是 EasyUI 1.3.2版本的,项目是ASP.NET MVC3,但是本篇讲解用不上ASP.NET MVC,仅仅修改官方Demo你就知道怎 ...
- C# ComboBox自动完成功能的示例
先看一下关键代码: DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("VV& ...
随机推荐
- FileUtils (从磁盘下载,从网络下载)
public class FileUtils { /** * realPath 磁盘路径 D://project/download/ * urlPath 后半部分路径 具体根据业务需求,例如:WEB- ...
- 【bzoj3195】【 [Jxoi2012]奇怪的道路】另类压缩的状压dp好题
(上不了p站我要死了) 啊啊,其实想清楚了还是挺简单的. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期 ...
- Web 与 Node 基础
浏览器端发送请求(browser) 浏览器或者模拟发送 http 请求端 服务端处理请求(web) 服务器(使用 node ) 2.1. 使用 Forever 管理程序 2.2. 可以使用 PM2 代 ...
- bootstrap-multiselect 设置单选无效(设置单选依然是复选框)
bootstrap-multiselect 的使用介绍:https://www.cnblogs.com/landeanfen/p/5013452.html bootstrap-multiselect ...
- 动态GI
在Engine/Config 目录中找到ConsoleVariables.ini并打开,在其中加入 r.LightPropagationVolume = 1 ,保存,重启引擎 如果场景中有Post P ...
- 网络抓包wireshark2
1.基本使用详见网络抓包wireshark,第一篇 2.中文版 2.1打开首页 2.2选择网卡 菜单栏->捕获->选项->输入(选择当前计算机网络ip对于的接口)->点击开始 ...
- consul安装
原文地址: https://www.cnblogs.com/cuishuai/p/8194345.html #比较详细/有集群方式 https://www.cnblogs.com/youcong/p/ ...
- win7下面安装flex和bison
通过Cygwin工具进行安装 下载地址cygwin 安装截图: 搜索flex,选择相应的版本进行安装 搜索bison 然后下一步 安装完成后,将D:\cygwin64\bin路径添加到PATH环境变量 ...
- .Net Core入门与.Net需要注意的地方
1.编码注册 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 否则抛出异常 'GB2312' is not a suppo ...
- JXLS (Excel导入、导出工具使用)
JXLS (Excel导入.导出工具使用) 1:简介: jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.java中成熟的excel导出工具有p ...