如上图,有一combox控件,用来输入车号进行模糊查询匹配;
问题:
我刚开始输入有匹配内容:
继续输入直到不能匹配时:
鼠标移开,就报如下错误:
代码如下:
//初始化绑定车号默认关键词(此数据源可以从数据库取) List<string> listOnitCarno = new List<string>(); //搜索到的符合条件的车号列表 List<string> listNew = new List<string>();
/// <summary> /// 车号输入时触发 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txt_carno_TextUpdate(object sender, EventArgs e) { GetItemsData(listOnitCarno); }
/// <summary> /// 获取数据 /// </summary> private void GetItemsData(List<string> listOnit) { //清空combobox txt_carno.Items.Clear(); //清空listNew listNew.Clear(); string curText = txt_carno.Text; //遍历全部备查数据 foreach (string item in listOnit) { if (item.Contains(curText.ToUpper())) { //符合,插入ListNew listNew.Add(item); } } //combobox添加已经查到的关键词 txt_carno.Items.AddRange(listNew.ToArray()); //设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列 txt_carno.SelectionStart = txt_carno.Text.Length; //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。 Cursor = Cursors.Default; //自动弹出下拉框 txt_carno.DroppedDown = true; }
异常提示:
求助各位高手!
大哥,你都清空集合了,当然没有数据。
你确定看懂问题了- -!,第一张图不是也输入有匹配内容,并且也执行了这个方法,清空了listNew.么。。
@以便以谢: 你每次进来都是先清空在获取值,只不是没有么
@搁忆: 清空的是listNew,获取的是combobox的Text值;
@以便以谢: 上一行代码不是清空combobox集合么
@搁忆: 算了,我顺着你的话回答吧,如果不清空怎么实现每次匹配呢,不然新检索的符合条件的列表跟原来列表混在一起了~