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);
} --------------------编程问答-------------------- 你需要研究下分词结构,对你要查的单词或者汉字,进行分词 --------------------编程问答--------------------
--------------------编程问答-------------------- 很不幸,默认的AutoComplete功能无法实现你的要求。 --------------------编程问答-------------------- 因为AutoCompleteCustomSource并不直接出现在下拉上,而操作系统仅仅将它作为数据源,并且仅仅显示那些开头和文本框中已经输入的内容匹配上的条目——这意味着,你将所有的数据全部加载到AutoCompleteCustomSource里面和仅仅加载匹配的项没有什么区别。
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赋值
这个问题直到Vista以后微软才解决,Vista以后的自动完成允许自定义的匹配,不过WinForms并没有对它进行封装。
补充:.NET技术 , C#