我有一个带有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
。甚至有可能吗?
答案 0 :(得分:0)
1)为DataSource
设置ValueMember
和ComboBox
时,要使用SelectedValue
属性选择特定值。
示例-分配SelectedValue
comboBox1.SelectedValue = 5;
2)当ComboBox
的所有项目均为T
类型时,您可以使用ComboBox.Items.Cast<T>()
在项目之间进行搜索,并将其分配给{{1} }。
示例-使用ComboBox.Items
进行搜索由于SelectedItem
的所有项目均为ComboBox
类型,因此可以使用linq T
将Cast<T>
转换为ObjectCollection
。例如:
IEnumerable<T>
记住要添加comboBox1.SelectedItem = comboBox1.Items.Cast<ComboItem>()
.Where(x => x.Value == 5).FirstOrDefault();
。