[英]Get index from Combobox based on ValueMember
您不需要根据选择的值查找索引,只需设置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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.