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自动模糊匹配的更多相关文章

  1. ExtJs combobox支持模糊匹配

    其实很简单,我们只需要在创建下拉框时,给下拉框添加一个监听事件,代码如下:   //以下监听事件用于对下拉项进行模糊匹配                     ,listeners:{       ...

  2. Ext.js Combobox 输入模糊匹配

    前台页面 aspx: 数据源: <ext:Store ID="storeJF" runat="server" AutoLoad="true&qu ...

  3. 转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果

    是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题 ...

  4. EasyUi模糊匹配搜索框combobox

    现在项目当中很多已经应用了Jquery-easyUi这个界面框架了,所以,学习一点easyUI的常用工具就显得很重要了,现在介绍的就是我在项目中用到的easyUi的模糊匹配组合框combobox. c ...

  5. combobox实现模糊查询自动填充

    利用winform设计软件界面时,经常用到combobox控件,但有时需要绑定数据表中的数据,更进一步,需要实现对数据表中数据的模糊查询功能.本文就讲讲述如何用C#实现combobox下拉列表的模糊查 ...

  6. 【搜索引擎】 PostgreSQL 10 实时全文检索和分词、相似搜索、模糊匹配实现类似Google搜索自动提示

    需求分析 要通过PostgreSQL实现类似Google搜索自动提示的功能,例如要实现一个查询海量数据中的商品名字,每次输入就提示用户各种相关搜索选项,例如淘宝.京东等电商查询 思路 这个功能可以用 ...

  7. EasyUI combobox下拉列表实现搜索过滤(模糊匹配)

    项目中的某个下拉列表长达200多个项,这么巨大的数量一个一个找眼镜都得看花,于是就得整了个搜索功能.看网上别人帖子有只能前缀匹配的方案,但只能前缀匹配的话用起来也不是很方便.于是就记录一下模糊匹配的方 ...

  8. 茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复]

    本次给大家带来的EasyUI的我研究拓展的新特性 我使用的是  EasyUI 1.3.2版本的,项目是ASP.NET MVC3,但是本篇讲解用不上ASP.NET MVC,仅仅修改官方Demo你就知道怎 ...

  9. C# ComboBox自动完成功能的示例

    先看一下关键代码: DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("VV& ...

随机推荐

  1. 0-4评价一个语言模型Evaluating Language Models:Perplexity

    有了一个语言模型,就要判断这个模型的好坏. 现在假设: 我们有一些测试数据,test data.测试数据中有m个句子;s1,s2,s3-,sm 我们可以查看在某个模型下面的概率: 我们也知道,如果计算 ...

  2. 【leetcode】1162. As Far from Land as Possible

    题目如下: Given an N x N grid containing only values 0 and 1, where 0 represents water and 1 represents ...

  3. weighted choice in python

    对列表按概率采样 Input: a collection C of elements and a probability distribution p over C; Output: an eleme ...

  4. delphi exec error 错误处理

    有时引用了三方jar后报错 [Exec Error] The command "PATH ..."" exited with code 1 解决方法 1.检测jar文件路 ...

  5. CF1244C

    题目描述 给出n,p,w,d,求(x,y,z)使得 xw+yd=p x+y+z=n 其中d<w<10^5^ 题解 显然扩欧啊( 来自天国的long long y如果大于等于w,则显然可以把 ...

  6. linux运维、架构之路-CentOS7

    一.CentOS7介绍 1.CentOS7使用起来最大的变化就是服务管理 2.systemd是linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化 ...

  7. makefile 打印

    $(warning ----------$(abc)) $(info -----------------$(abc))

  8. POJ 2456 Aggressive cows ( 二分 && 贪心 )

    题意 : 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1e9) ...

  9. 3D Computer Grapihcs Using OpenGL - 09 Enable Depth Test

    启用Depth Test OpenGL是个3D绘图API,也就是说不只有xy坐标轴,还有第三个坐标轴z,z轴的方向是垂直于屏幕,指向屏幕内. 靠近人眼的方向是负方向,标准化设备坐标的最小值是-1, 最 ...

  10. [洛谷P3940]:分组(贪心+并查集)

    题目传送门 题目描述 小$C$在了解了她所需要的信息之后,让兔子们调整到了恰当的位置.小$C$准备给兔子们分成若干个小组来喂恰当的胡萝卜给兔子们吃.此时,$n$只兔子按一定顺序排成一排,第$i$只兔子 ...