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 comboBox1_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.Text = "";
return;
}
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这个提示,以下是核心代码
1 2 3 |
|