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;//重新绑定事件
}