簡體   English   中英

如何根據條件在WinForms ComboBox中設置SelectedItem

[英]How to set SelectedItem in WinForms ComboBox depending on a condition

我有一個帶有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)ComboBox設置DataSourceValueMember ,要選擇特定值,請使用SelectedValue屬性。

示例-分配SelectedValue

comboBox1.SelectedValue = 5;

2)ComboBox所有項目均為T類型時,您可以使用ComboBox.Items.Cast<T>()將其分配給SelectedItem來在項目之間進行搜索。

示例-使用ComboBox.Items搜索

由於ComboBox所有項目均為T類型,因此可以使用linq Cast<T>ObjectCollectionIEnumerable<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM