当前位置:编程学习 > C#/ASP.NET >>

C#中在combobox中实现模糊查询

我想在combobox中实现模糊查询,绑定到数据库,下面的代码能实现英文的检索条件,但是我查的内容都是中文的,我想根据中文的首字母来实现模糊查询,该怎么做?以下是我的代码:
           comboWZMC1.AutoCompleteSource = AutoCompleteSource.CustomSource;
           comboWZMC1.AutoCompleteMode = AutoCompleteMode.Suggest;
           string[] myLst = new string[ds.Tables[0].Rows.Count];

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                myLst[i]=ds.Tables[0].Rows[i][0].ToString();
                
            }
            foreach (string m in myLst)
            {
                comboWZMC1.AutoCompleteCustomSource.Add(m);
            } --------------------编程问答-------------------- 你需要研究下分词结构,对你要查的单词或者汉字,进行分词 --------------------编程问答--------------------

1、引用类库 

    using System.Runtime.InteropServices;    //API调用需要引用这个类库

2、声明函数和常量

      [DllImport("user32.dll", EntryPoint="SendMessageA")]    //引用SendMessage API

      private static extern int SendMessage (IntPtr hwnd, int wMsg, IntPtr wParam,  string lParam);

      const int CB_FINDSTRING = 0x14C; //声明查找字符串的常数          

3、调用

    string s =textBox1.Text;    //获取TextBox1的值 

    int i=SendMessage(this.comboBox1.Handle, CB_FINDSTRING, IntPtr.Zero, s);  

     comboBox1.SelectedIndex=i;    //根据查找结果给ComboBox赋值
--------------------编程问答-------------------- 很不幸,默认的AutoComplete功能无法实现你的要求。 --------------------编程问答-------------------- 因为AutoCompleteCustomSource并不直接出现在下拉上,而操作系统仅仅将它作为数据源,并且仅仅显示那些开头和文本框中已经输入的内容匹配上的条目——这意味着,你将所有的数据全部加载到AutoCompleteCustomSource里面和仅仅加载匹配的项没有什么区别。

这个问题直到Vista以后微软才解决,Vista以后的自动完成允许自定义的匹配,不过WinForms并没有对它进行封装。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,