新文章 网摘 文章 随笔 日记

Winform ComboBox输入智能匹配 (即可搜索下拉列表)

        private void CbxWorkOrder_TextChanged(object sender, EventArgs e)
        {
            CbxWorkOrder.DataSource = null;
            CbxWorkOrder.Items.Clear();
            var inputWorkOrder = CbxWorkOrder.Text?.Trim().ToUpper();
            if (string.IsNullOrWhiteSpace(inputWorkOrder))
            {
                CbxWorkOrder.Items.AddRange(_workOrders.ToArray());//比使用DataSource速度要快一些
            }
            var workOrderFiltered = _workOrders.Where(x => x.IndexOf(inputWorkOrder, StringComparison.CurrentCultureIgnoreCase) != -1).ToArray();//忽略大小写

            CbxWorkOrder.TextChanged -= CbxWorkOrder_TextChanged;//先解除事件绑定
            CbxWorkOrder.Items.AddRange(workOrderFiltered.ToArray());
            CbxWorkOrder.Text = inputWorkOrder;
            //让文本框获取焦点
            CbxWorkOrder.Focus();
            //设置光标的位置到文本尾
            CbxWorkOrder.Select(CbxWorkOrder.Text.Length, 0);//光标定位到文本的末尾
            CbxWorkOrder.DroppedDown = true;//展开下拉列表
            //保持鼠标指针形状
            Cursor = Cursors.Hand;
            CbxWorkOrder.TextChanged += CbxWorkOrder_TextChanged;//重新绑定事件
        }

 

posted @ 2023-01-30 15:43  岭南春  阅读(1338)  评论(0)    收藏  举报