2022-11-18 修复combobox不存在的字符串时会清空
2022-01-06 更新
2022-01-06 更新
效果图如下
方法1
2021-12-20 更新,修复输入不存在的数据源然后点击其他地方会报错
核心代码
//数据源 List<string> data = new List<string>() { "A001", "A002", "A003", "B001", "B012", "B031", "C011", "C0121", "C01231", "C0101", }; /// <summary> /// comboBox1文件内容发现改变时 触发事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbkeyWords_TextUpdate(object sender, EventArgs e) { //清空combobox ComboBox cb = sender as ComboBox; cb.Items.Clear(); //临时存放备查数据 List<string> temp = new List<string>(); foreach (var item in data) { if (item.Contains(cb.Text)) { temp.Add(item); } } if (temp.Count < 1) {//修复输入不存在的数据源然后点击其他地方会报错 cb.Items.Add(""); cb.SelectionStart = cb.Text.Length; } else { try { //combobox添加已经查到的关键词 cb.Items.AddRange(temp.ToArray()); //设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列 cb.SelectionStart = cb.Text.Length; //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。 Cursor = Cursors.Default; //自动弹出下拉框 cb.DroppedDown = true; } catch { cb.SelectedIndex = -1; } } }
方法2
今天发现 Combobox有自带查询功能自动提示功能,不过有些功能没实现,如我们在combobox里面搜A001,只能输入A开始才会提示A001,如果输入0开始没不会有A001这个提示,以下是核心代码
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; //转载请保留http://www.luofenming.com/show.aspx?id=ART2021121700001