日期:2014-05-18  浏览次数:21838 次

winform中combobox下拉框的模糊匹配

RT,我只知道combobox中这样写可以根据第一个字符匹配,我现在想根据输入的字符自动模糊匹配含有这个字母的项
例如:combobox中有项:
NO.1
NO.2
NO.3
4
5
如果是根据将属性AutoCompleteMode改为SuggestAppend,AutoCompleteSource改为ListItems,DropDownStyle改为Simple,只能实现输入第一个字符匹配的显示。比如我输入4,可以显示4;我输入1,就没找到1
我想实现的是:我输入1,可以找到NO.1
求教~~ 谢谢

------解决方案--------------------
我感觉如果需要经常进行模糊比对,是不是开辟一块内存,然后将出现的字符的ASCLL值与存在该字符的数据连接起来,然后进行模糊比对时,可以根据用户输入的字符轻松找到所有包含该字符的数据
------解决方案--------------------
对于在大量数据中查找,我感觉,在录入数据时就得将数据有规则的存放,这样查找起来会很方便
------解决方案--------------------
界面一个TextBox1一个ComBoBox,根据TextBox的值匹配
C# code

            //先绑定数据到ComBoBox
            DataTable data = new DataTable();//定义成全局
            data.Columns.Add("column1", typeof(int));
            data.Columns.Add("column2", typeof(string));
            DataRow dr1 = data.NewRow();
            dr1["column1"] = 1;
            dr1["column2"] = "NO.1";
            DataRow dr2 = data.NewRow();
            dr2["column1"] = 2;
            dr2["column2"] = "NO.2";
            DataRow dr3 = data.NewRow();
            dr3["column1"] = 3;
            dr3["column2"] = "NO.3";

            data.Rows.Add(dr1);
            data.Rows.Add(dr2);
            data.Rows.Add(dr3);
            this.comboBox1.DataSource = data;
            this.comboBox1.DisplayMember = "column2";

------解决方案--------------------
combobox总是左匹配的,没法设置,你必须自己从listbox去扩展
------解决方案--------------------
不能靠autocompelete来做
自己写吧
textchanged事件 重新加载 数据源 然后选中