日期:2014-05-17  浏览次数:21172 次

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的值匹配

            //先绑定数据到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";




        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string sn = "column2 like '%" + this.textBox5.Text.Trim() + "%'";

            DataRow[] dr = data.Select(sn);
            foreach (DataRow d in dr)
            {
                this.comboBox1.DataSource = d.ItemArray.ToList();
      &nb