c# combobox下拉框实现搜索
步骤一
这个是加载窗口时候的部分代码,可忽视
// 这个是窗口加载时候的部分代码,可以忽略 // combobox 指定数据源 (deptds是一个全局变量) cbdept.datasource = deptds.tables[0]; // 指定 下拉框 显示内容的值 cbdept.valuemember = "id"; // 指定 下拉框 显示的内容 cbdept.displaymember = "name"; // 指定当前选中的是哪个一个 cbdept.selectedvalue = protalinformation.orgid;
步骤二
在 combobox 下拉框添加一个键盘事件
步骤三
实现下拉框搜索,对应 步骤二 键盘事件
// keyup 事件 private void cbdept_keyup(object sender, keyeventargs e) { // 如果是回车的话,就选中 if (e.keycode == keys.enter) { cb.droppeddown = false; return; } // 判断如果是某些按键,就不触发 if (e.keycode == keys.shiftkey || e.keycode == keys.capslock || e.keycode ==keys.back || e.keycode == keys.down || e.keycode == keys.up) { return; } // 获取需要筛选的内容 string str = cbdept.text; // 从datatable中筛选,再次声明一下 deptds 是个全局变量 datarow[] drs = deptds.tables[0].select($"name like '%{str}%'"); // 克隆表 datatable dt = deptds.tables[0].clone(); // 将数据添加到表中 foreach (datarow dr in drs) { dt.rows.add(dr.itemarray); } // 展开下拉列表 cbdept.droppeddown = true; // 赋值给下拉框 cbdept.datasource = dt; // 赋值选项的内容,变来变了去不好看 cbdept.selectedvalue = ""; // 将输入的内容重新赋值给下拉框 cbdept.text = str; // 这个是输入的光标位置,要不要会跑到最左边 cbdept.selectionstart = str.length; }
总结
本来想弄个gif图片展示一下实现后的效果的,但是数据不方便公开,希望大家多多谅解。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论