C# 使用.NET中的数据绑定项从集合的id设置组合框值
我有一个组合框C# 使用.NET中的数据绑定项从集合的id设置组合框值,c#,.net,winforms,combobox,C#,.net,Winforms,Combobox,我有一个组合框cbAnimal,它从一个只显示动物名称的数据源绑定到这样一个表 +-----------+-------+ | id_animal | name | +-----------+-------+ | 3 | Cat | | 4 | Dog | | 6 | Cow | | 8 | Horse | +-----------+-------+ cbAnimal完美地显示了名称列表,我可以通过使用ValueMe
cbAnimal
,它从一个只显示动物名称的数据源绑定到这样一个表
+-----------+-------+
| id_animal | name |
+-----------+-------+
| 3 | Cat |
| 4 | Dog |
| 6 | Cow |
| 8 | Horse |
+-----------+-------+
cbAnimal
完美地显示了名称列表,我可以通过使用ValueMember属性选择名称来检索id\u animal
问题是,稍后我还需要通过id\u animal
设置cbAnimal
的值
e、 g.我将传递id 6,并且在组合框上必须显示“Cow”,并且仍然允许修改
我尝试使用:
cbAnimal.SelectedIndex=myAnimal.id\u动物代码>
但它不起作用
是否可以使用Combobox的属性执行此操作
编辑:我应该澄清我想做什么:
加载winforms时,如果传递的Id为6,我需要使其显示默认值为“Cow”,而不是Cat(第一个元素)。执行此操作
公共类动物
{
公共int id{get;set;}
公共int名称{get;set;}
}
//填满
var animalList=新列表();
//捆绑
comboBox.ValueMember=“id”;
comboBox.DisplayMemeber=“name”;
comboBox.DataSource=动物列表;
//稍后,您可以执行此操作以选择项目
comboBox.SelectedIndex=animalList.FindIndex(a=>a.id==2);
即使您不继续引用animalList
,您也可以这样做
comboBox.SelectedIndex = ((List<animal>)comboBox.DataSource).FindIndex(a => a.id == 2);
comboBox.SelectedIndex=((列表)comboBox.DataSource).FindIndex(a=>a.id==2);
在没有列表的情况下执行此操作
公共类动物
{
公共int id{get;set;}
公共int名称{get;set;}
公共重写字符串ToString()//a.id==2);
或者只是循环
for(int i=0;i
使用SelectedValue
属性而不是SelectedIndexSelectedIndex
将返回/获取索引值(0-3)对于列表中的每个项目。SelectedValue
将返回/获取与所选项目的id\u animal
对应的值item@JayV它仍然显示下拉列表的第一个元素(“Cat”)而不是“Cow”当我再次打开表单时。如果关闭并重新打开表单,则重置数据源,使其进入第一项。如果要向表单传递值,则要设置组合框选择,请在form.Load或form.Showed中执行,而不是在表单构造函数中执行。您可以设置SelectedValue
以匹配ValueMembe定义的字段中的值r
,导致选择移动当前记录。您在设计器中设置的内容在设计器中非常有用,可用于评估选择更改的结果。请注意,我从未使用过数据设计器,也永远不会使用:生成的样板代码太多,根本不需要。--如果要在组合框中设置默认值,请设置表单中的SelectedValue
。加载事件处理程序。这很好,但是没有列表也有其他方法。我仍然不知道这个属性是如何工作的。@JuaniElias这个答案说明了如何在没有列表的情况下执行它