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