[英]How to set SelectedItem in WinForms ComboBox depending on a condition
我有一個帶有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
設置DataSource
和ValueMember
,要選擇特定值,請使用SelectedValue
屬性。
示例-分配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;
添加using System.Linq;
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.