如何根据条件在WinForms ComboBox中设置SelectedItem



我有一个包含ComboBox的WinForms应用程序。我想根据其值以编程方式选择一个项目。

我尝试使用IndexOf但它需要整个对象,我只想按值来做。 Items ObjectCollection,我不能使用它Linq(或者不知道如何(。

在一个地方,我像这样设置它的源代码:

private void SetItems()
{
    var items = new List<ComboItem>(3);
    //Add items to the list
    combo.BeginUpdate();
    combo.DataSource = items;
    combo.ValueMember = "Value";
    combo.DisplayMember = "Name";
    combo.EndUpdate();
}
private class ComboItem
{
    public int Value { get; set; }
    public string Name { get; set; }
}

然后(在其他地方(我想根据值设置所选项目。 例如,如果我有组合值:

"Option1": 2,
"Option2": 5,
"Option3": 10

我想做这样的事情:

combo.Items.SelectedValue = 5

并在组合中选择Option2.甚至可能吗?

1(ComboBox 设置 DataSourceValueMember 时,要选择特定值,请使用SelectedValue属性。

示例 - 分配选定值

comboBox1.SelectedValue = 5;

2(ComboBox的所有项目都是T类型时,您可以使用ComboBox.Items.Cast<T>()将其分配给SelectedItem在项目之间进行搜索。

示例 - 使用 ComboBox.Items 进行搜索

由于ComboBox的所有项目都属于 T 类型,因此可以使用 linq Cast<T>ObjectCollection强制转换为IEnumerable<T>。例如:

comboBox1.SelectedItem = comboBox1.Items.Cast<ComboItem>()
    .Where(x => x.Value == 5).FirstOrDefault();

记得添加 using System.Linq; .

最新更新