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

时间:2019-02-07 13:15:05

标签: c# winforms combobox

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

我尝试使用IndexOf,但它需要整个对象,我只想按值来做。 ItemsObjectCollection,我不能在上面使用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 个答案:

答案 0 :(得分:0)

1)DataSource设置ValueMemberComboBox时,要使用SelectedValue属性选择特定值。

示例-分配SelectedValue

comboBox1.SelectedValue = 5;

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

示例-使用ComboBox.Items

进行搜索

由于SelectedItem的所有项目均为ComboBox类型,因此可以使用linq TCast<T>转换为ObjectCollection。例如:

IEnumerable<T>

记住要添加comboBox1.SelectedItem = comboBox1.Items.Cast<ComboItem>() .Where(x => x.Value == 5).FirstOrDefault();