WinForm ComboBox下拉框带搜索功能

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

this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;

this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;

//转载请保留WinForm ComboBox下拉框带搜索功能-罗分明网络博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值