以数据源为列表的 Winform Combobox<int>

Winform Combobox with DataSource as List<int>

这可能是一个非常简单的问题,但我意识到我做不到。

我有一个带有数据源的 Winform 组合框 List<int>

combo.DataSource = intList;

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

我曾与其他 List<myObj> 合作过,其中 DisplayMemberValueMember 是 myObj 的属性。像 intstring 这样的简单数据类型怎么样?

获取选中的物品时,可以简单的施放(int)(combo.SelectedItem)或者必须经过ValueMember对应的属性?

这里 BindingSource 出现了。你可以这样使用它。

BindingSource bSource = new BindingSource();
bSource.DataSource = new List<int> { 1, 2, 3 };
combo.DataSource = bSource;

虽然你可以直接用列表设置组合框的数据源。像这样 -

combo.DataSource = intList;

这也很好用。

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

foreach (var v in intList)
{
   comboBox1.Items.Add(v.ToString());
}

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

将项目分配给 .DataSource 属性 之前将项目添加到列表 ,或者使用像 BindingSource 这样的包装器作为 Krishnraj Rana建议。