Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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# 数据源为列表的Winform组合框<;int>;_C#_Winforms_Combobox_Datasource - Fatal编程技术网

C# 数据源为列表的Winform组合框<;int>;

C# 数据源为列表的Winform组合框<;int>;,c#,winforms,combobox,datasource,C#,Winforms,Combobox,Datasource,这可能是一个非常简单的问题,但我意识到我无法让它工作 我有一个Winform组合框,其中数据源作为列表 我应该为.DisplayMember和.ValueMember添加什么内容,以便简单地拥有一个整数值列表?不设置它们将不会显示任何内容 我曾使用过其他列表,其中DisplayMember和ValueMember是myObj的属性。像int,string这样的简单数据类型怎么样 检索所选项目时,您可以简单地强制转换(int)(combo.SelectedItem),或者必须检查与ValueMem

这可能是一个非常简单的问题,但我意识到我无法让它工作

我有一个Winform组合框,其中数据源作为
列表

我应该为
.DisplayMember
.ValueMember
添加什么内容,以便简单地拥有一个整数值列表?不设置它们将不会显示任何内容

我曾使用过其他
列表
,其中
DisplayMember
ValueMember
是myObj的属性。像
int
string
这样的简单数据类型怎么样

检索所选项目时,您可以简单地强制转换
(int)(combo.SelectedItem)
,或者必须检查与
ValueMember

对应的属性。你可以这样使用它

BindingSource bSource = new BindingSource();
bSource.DataSource = new List<int> { 1, 2, 3 };
combo.DataSource = bSource;
foreach (var v in intList)
{
   comboBox1.Items.Add(v.ToString());
}
这也可以很好地工作。

下面是图片。你可以这样使用它

BindingSource bSource = new BindingSource();
bSource.DataSource = new List<int> { 1, 2, 3 };
combo.DataSource = bSource;
foreach (var v in intList)
{
   comboBox1.Items.Add(v.ToString());
}

这也非常好。

您可以像这样使用foreach从列表中添加项目

BindingSource bSource = new BindingSource();
bSource.DataSource = new List<int> { 1, 2, 3 };
combo.DataSource = bSource;
foreach (var v in intList)
{
   comboBox1.Items.Add(v.ToString());
}

您可以像这样使用foreach从列表中添加项

BindingSource bSource = new BindingSource();
bSource.DataSource = new List<int> { 1, 2, 3 };
combo.DataSource = bSource;
foreach (var v in intList)
{
   comboBox1.Items.Add(v.ToString());
}

出现此问题不是因为您有一个整数列表,可能是因为您在将列表分配给
.DataSource
属性后向列表中添加了项。列表没有在向其添加项目或从中删除项目时通知其容器的机制


要么在将项目分配给
.DataSource
属性之前将其添加到列表中,要么按照Krishnaj Rana的建议使用包装器。

问题不会发生,因为您有一个整数列表,可能是因为您在将项目分配给
.DataSource
属性之后将其添加到列表中。列表没有在向其添加项目或从中删除项目时通知其容器的机制


在将列表分配给
.DataSource
属性之前,可以向列表中添加项目,或者使用Krishnaj Rana建议的包装器。

不设置DisplayMember和ValueMember,它应该可以工作。您是否尝试过简单地为这两个值分配“”?如果不设置DisplayMember和ValueMember,它应该可以工作。您是否尝试过为这两个值简单地赋值?您是对的。修改基础列表后,我没有重新绑定。我一直认为这是列表和DisplayMember的问题。另一方面,通常每次修改列表后,我都需要重新绑定:Bindingsource bsource=new Bindingsource();bsource.DataSource=listInt;combo.DataSource=b源;combo.Invalidate();这是正确的方法吗?@Kenny如果您使用BindingSource,那么您应该修改BindingSource而不是基础列表。此外,combo.Invalidate()应该是必需的。您是对的。修改基础列表后,我没有重新绑定。我一直认为这是列表和DisplayMember的问题。另一方面,通常每次修改列表后,我都需要重新绑定:Bindingsource bsource=new Bindingsource();bsource.DataSource=listInt;combo.DataSource=b源;combo.Invalidate();这是正确的方法吗?@Kenny如果您使用BindingSource,那么您应该修改BindingSource而不是基础列表。此外,应该需要combo.Invalidate()。