如何在用户输入文本后对组合框进行排序

本文关键字:组合 排序 用户 输入 文本 | 更新日期: 2023-09-27 17:59:39

我有一个组合框,用户可以在其中输入文本或从列表中进行选择。当用户输入自己的文本,而不是显示在下拉列表的底部或顶部时,我希望它以正确的顺序显示。例如,如果用户键入24,我希望它在20到30之间。

private void LoadComboBox()
    {
        if (ddlTypeUnits.SelectedValue == "HP")
        {
            MotorSizeThreePhase[] motors = MotorSizeThreePhaseFactory.GetList(ActingMotorType, IsHPorBTU, IsAC, true, Common.GetConnectionString());
            cmbOutputRating.DataSource = motors;
            cmbOutputRating.DataTextField = "MotorSizeHP";
            cmbOutputRating.DataValueField = "MotorSizeHP";
            cmbOutputRating.DataBind();
        }
        ThreePhaseMotorLoad curLoad = (ThreePhaseMotorLoad)this.LoadObject;
        ListItem item = new ListItem(curLoad.Size.ToString()); //gets the stored size value
        if (!cmbOutputRating.Items.Contains(item))  //add the size value to the dropdown list
        {
            cmbOutputRating.DataBind();
            cmbOutputRating.Items.Add(item);
            cmbOutputRating.Text = curLoad.Size.ToString();
        }
    }

如何在用户输入文本后对组合框进行排序

C#-是否可以将组合框项目从a排列到z?

如果您使用Win Forms,只需使用ComboBox.Sorted=true;

如果组合框中的数据以列表的形式出现,只需在放入数据之前对要放入组合框的数据列表使用OrderBy即可。示例:

    List<string> a = new List<string>()
    {
        "q",
        "w",
        "e",
        "r",
        "t",
        "y",
        "u",
        "i",
        "o",
        "p",
        "a",
        "s",
        "d",
        "f",
        "g",
        "h",
        "j",
        "k",
        "l",
        "z",
        "x",
        "c",
        "v",
        "b",
        "n",
        "m",
    };
    comboBox1.Items.AddRange(a.OrderBy(c => c).ToArray());

我没有执行items.add()并将该项追加到列表的底部,而是将该项插入到正确的索引中。

            int newItemIndex = 0;
            foreach (ListItem li in cmbOutputRating.Items)
            {
                if (Convert.ToDouble(li.Value) < curLoad.Size)
                {
                    newItemIndex++;
                }
            }
            cmbOutputRating.Items.Insert(newItemIndex, curLoad.Size.ToString());