Вам не нужно искать индекс на основе выбранного значения, просто установите SelectedValue
.
Пример 1 - Установите SelectedValue
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = Enumerable.Range(1, 5)
.Select(x => new { Name = $"Product {x}", Id = x }).ToList();
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";
}
private void button1_Click(object sender, EventArgs e)
{
comboBox1.SelectedValue = 3;
}
Хотя в приведенном выше примере показано, как установить выборку с использованием выбранного значения, если по какой-либо причине вы хотите найти элемент или выбранный индекс на основе этого значения, вам необходимо использовать этот метод расширения GetItemValue и найти На этом основывается элемент.
Пример 2 - Получить элемент по значению → Установить SelectedItem
private void button1_Click(object sender, EventArgs e)
{
var value = 3;
var item = comboBox1.Items.Cast<Object>()
.Where(x => comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
comboBox1.SelectedItem = item;
}
Пример 3 - Получить индекс по значению → Установить SelectdIndex
private void button1_Click(object sender, EventArgs e)
{
var value = 3;
var item = comboBox1.Items.Cast<Object>()
.Where(x => comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
var index = comboBox1.Items.IndexOf(item);
comboBox1.SelectedIndex = index;
}