Binding a generic List<string> to a ComboBox
89,916
Solution 1
You need to call the Bind method:
cbxProjectd.DataBind();
If this is for winforms then you need to make sure what you have is being called, the following works:
BindingSource bs = new BindingSource();
bs.DataSource = new List<string> { "test1", "test2" };
comboBox1.DataSource = bs;
Although you can set the ComboBox's DataSource directly with the list.
Solution 2
this is the simple way (it works correctly):
List<string> my_list = new List<string>();
my_list.Add("item 1");
my_list.Add("item 2");
my_list.Add("item 3");
my_list.Add("item 4");
my_list.Add("item 5");
comboBox1.DataSource = my_list;
Solution 3
Here is a rather simple way that doesn't use BindingSource:
first, add the generic list of string, perhaps to a "consts/utils" class:
public static List<string> Months = new List<string>
{
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
};
And here's how you add those strings to a combo box:
comboBoxMonth.Items.AddRange(UsageRptConstsAndUtils.Months.ToArray<object>());
Author by
Nathan
Updated on July 09, 2022Comments
-
Nathan almost 2 years
I have a ComboBox and I want to bind a generic List to it. Can anyone see why the code below won't work? The binding source has data in it, but it won't fill the ComboBox data source.
FillCbxProject(DownloadData Down) { BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = Down.ProjectList; cbxProjectd.DataSource = bindingSource; }
On a side note: Is it bad to pass around an instance of a class?
Thanks!