C# ComboBox下拉框实现搜索方式
更新时间:2024年12月28日 09:18:03 作者:Name.Gy
文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教
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图片展示一下实现后的效果的,但是数据不方便公开,希望大家多多谅解。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
DevExpress SplitContainerControl用法总结
这篇文章主要介绍了DevExpress SplitContainerControl用法,对初学者有一定的参考借鉴价值,需要的朋友可以参考下2014-08-08
最新评论