C# 基于ValueMember从组合框获取索引
我有一个组合框,它将C# 基于ValueMember从组合框获取索引,c#,.net,winforms,combobox,C#,.net,Winforms,Combobox,我有一个组合框,它将名称存储为DisplayMember,将id存储为ValueMember。在我的数据库中,我只存储id 如何通过id将其设置为正确的索引 示例代码: Combobox.SelectedIndex = Combobox.FindByValueMember("10"); 我能找到的最好的答案是这个问题,但投票最多的答案并不能解释这个问题是什么 int index = comboref.Items.IndexOf("string"); 不工作,因为它不按ValueMember搜
名称
存储为DisplayMember,将id
存储为ValueMember。在我的数据库中,我只存储id
如何通过id
将其设置为正确的索引
示例代码:
Combobox.SelectedIndex = Combobox.FindByValueMember("10");
我能找到的最好的答案是这个问题,但投票最多的答案并不能解释这个问题是什么
int index = comboref.Items.IndexOf("string");
不工作,因为它不按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;
}
虽然上面的示例显示了如何使用选定值设置选择,但如果出于任何原因,您希望基于该值查找项目或选定索引,则需要使用此扩展方法并基于该值查找项目
示例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;
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var值=3;
var item=comboBox1.Items.Cast()
.Where(x=>comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
comboBox1.SelectedItem=项目;
}
示例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;
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var值=3;
var item=comboBox1.Items.Cast()
.Where(x=>comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
var index=comboBox1.Items.IndexOf(item);
comboBox1.SelectedIndex=索引;
}
您不需要根据所选值查找索引,只需设置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;
}
虽然上面的示例显示了如何使用选定值设置选择,但如果出于任何原因,您希望基于该值查找项目或选定索引,则需要使用此扩展方法并基于该值查找项目
示例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;
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var值=3;
var item=comboBox1.Items.Cast()
.Where(x=>comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
comboBox1.SelectedItem=项目;
}
示例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;
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var值=3;
var item=comboBox1.Items.Cast()
.Where(x=>comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
var index=comboBox1.Items.IndexOf(item);
comboBox1.SelectedIndex=索引;
}
您是否尝试过以下操作:comboref.Items[“string”]
,似乎是让我看看它是否有效,我没有找到问题集SelectedValue
。您不需要查找index.IMO,SelectedValue
应该是您要查找的;然而,出于学习目的,我分享了基于值设置SelectedItem
和SelectedIndex
的示例。您是否尝试过:comboref.Items[“string”]
,这似乎是一个让我看看是否有效的问题,我没有找到该问题集SelectedValue
。您不需要查找index.IMO,SelectedValue
应该是您要查找的;但是为了学习,我分享了一些示例,用于根据值设置SelectedItem
和SelectedIndex
。感谢提供这些示例。设置SelectedValue对我来说很有效,但与第一个示例中使用Int的建议不同。我必须执行comboBox1.SelectedValue=value.ToString()
,否则它将变为null。不客气。我的示例中的类型是int
,因此不需要ToString
。它应该遵循上次在DataSource
@Joãonnes setcomboBox1.DataSource=…
中对象的ValueMember
字段中设置的相同类型。感谢您的示例。设置SelectedValue对我来说很有效,但与第一个示例中使用Int的建议不同。我必须执行comboBox1.SelectedValue=value.ToString()
,否则它将变为null。不客气。我的示例中的类型是int
,因此不需要ToString
。它应该遵循上次在DataSource
@Joãonnes setcomboBox1.DataSource=…
中对象的ValueMember
字段中设置的相同类型。