Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.NET中的数据绑定项从集合的id设置组合框值_C#_.net_Winforms_Combobox - Fatal编程技术网

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
属性而不是SelectedIndex
SelectedIndex
将返回/获取索引值(0-3)对于列表中的每个项目。
SelectedValue
将返回/获取与所选项目的
id\u animal
对应的值item@JayV它仍然显示下拉列表的第一个元素(“Cat”)而不是“Cow”当我再次打开表单时。如果关闭并重新打开表单,则重置数据源,使其进入第一项。如果要向表单传递值,则要设置组合框选择,请在form.Load或form.Showed中执行,而不是在表单构造函数中执行。您可以设置
SelectedValue
以匹配
ValueMembe定义的字段中的值r
,导致选择移动当前记录。您在设计器中设置的内容在设计器中非常有用,可用于评估选择更改的结果。请注意,我从未使用过数据设计器,也永远不会使用:生成的样板代码太多,根本不需要。--如果要在组合框中设置默认值,请设置表单中的
SelectedValue
。加载事件处理程序。这很好,但是没有列表也有其他方法。我仍然不知道这个属性是如何工作的。@JuaniElias这个答案说明了如何在没有列表的情况下执行它