Как установить SelectedItem в WinForms ComboBox в зависимости от условия - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть приложение WinForms с ComboBox.Я хочу программно выбрать элемент в зависимости от его значения.

Я пытался использовать 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 Ответ

0 голосов
/ 07 февраля 2019

1) При настройке DataSource и ValueMember для ComboBox, чтобы выбрать конкретное значение, используйте свойство 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;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...