常规模糊查询随便搜搜就有了,这里写一下绑定DataSource的情况下,进行模糊查询
实现的效果:
代码:
首先新添2个字段,待会要用到
private List<string> 初始数据 = new List<string>() { "A001", "A002", "B001", "B002", "C002" };//ComboBox的初始数据
private Control 顶级控件;//ComboBox所属的顶级父控件
构造函数里
public Form1(){
if (DropDownStyle == ComboBoxStyle.DropDown) {//只有这个状态才能进行模糊查询
设置顶级控件(this);
comboBox1.TextUpdate += 下拉框模糊查询;
}
comboBox1.DataSource = 初始数据;
}
设置顶级控件:用于设置鼠标指针模式,防止鼠标指针消失
private void 设置顶级控件(Control con) {
if (con.Parent == null) {
顶级控件 = con;
return;
}
设置顶级控件(con.Parent);
}
核心代码
private void 下拉框模糊查询(object sender, EventArgs e) {
ComboBox cb = sender as ComboBox;
string text = cb.Text;
if (text == "") {
cb.DataSource = 初始数据;
cb.Text = "";
return;
}
List<string> temp = 初始数据.FindAll(x => x.Contains(text));//查询包含的集合
if (temp.Count != 0) {
cb.DataSource = temp;
cb.DroppedDown = true;//显示下拉框
顶级控件.Cursor = Cursors.Default;//指针为默认
cb.Text = text;//赋默认值
cb.SelectionStart = Text.Length;//设置光标位置
}
}