根据 ValueMember 从 Combobox 获取索引
Get index from Combobox based on ValueMember
我有一个组合框,它存储一个 name
作为 DisplayMember 和一个 id
作为 ValueMember。在我的数据库中,我只存储 id
.
如何通过 id
将其设置为正确的索引?
示例代码:
Combobox.SelectedIndex = Combobox.FindByValueMember("10");
我能找到的最好的问题是 this 个问题,但投票最多的答案并没有弄明白问题是什么。
int index = comboref.Items.IndexOf("string");
不起作用,因为它不按 ValueMember 搜索。
This 回答了它,但我想知道是否有更好的方法。
不需要根据选择的值查找索引,设置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;
}
我有一个组合框,它存储一个 name
作为 DisplayMember 和一个 id
作为 ValueMember。在我的数据库中,我只存储 id
.
如何通过 id
将其设置为正确的索引?
示例代码:
Combobox.SelectedIndex = Combobox.FindByValueMember("10");
我能找到的最好的问题是 this 个问题,但投票最多的答案并没有弄明白问题是什么。
int index = comboref.Items.IndexOf("string");
不起作用,因为它不按 ValueMember 搜索。
This 回答了它,但我想知道是否有更好的方法。
不需要根据选择的值查找索引,设置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;
}