我想在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.   


    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赋值
      

  2.   

    很不幸,默认的AutoComplete功能无法实现你的要求。
      

  3.   

    因为AutoCompleteCustomSource并不直接出现在下拉上,而操作系统仅仅将它作为数据源,并且仅仅显示那些开头和文本框中已经输入的内容匹配上的条目——这意味着,你将所有的数据全部加载到AutoCompleteCustomSource里面和仅仅加载匹配的项没有什么区别。这个问题直到Vista以后微软才解决,Vista以后的自动完成允许自定义的匹配,不过WinForms并没有对它进行封装。