手动填充和选择ComboBox项

时间:2014-04-02 20:34:09

标签: c# winforms combobox datasource

我无法相信这项简单任务有多难。

我有以下代码:

cboCountry.ValueMember = "ID";
cboCountry.DisplayMember = "Title";
var countries = from c in context.Set<sc_Countries>()
                orderby c.Title
                select new { c.ID, c.Title };

现在,我想用这个集合填充ComboBox cboCountry,然后我想选择ID(值)&#34; US&#34;的列表项。

我可以使用cboCountry.Items.AddRange(countries.ToList())将项目添加到ComboBox,但cboCountry.SelectedValue = "US"没有效果。

接下来,我尝试使用cboCountry.DataSource = countries添加集合,但这只是将控件列表留空。

当然,必须有一种简单的方法来完成这项微不足道的任务。任何人都可以提供缺少的成分吗?

1 个答案:

答案 0 :(得分:2)

在您的ToList()声明中致电LINQ之前,您实际上并未从数据库中获取数据:

var countries = (from c in context.Set<sc_Countries>()
                 orderby c.Title
                 select new { c.ID, c.Title }).ToList();

现在你应该可以设置DataSource等,就像你一样:

cboCountry.ValueMember = "ID";
cboCountry.DisplayMember = "Title";
cboCountry.DataSource = countries;
cboCountry.SelectedValue = "US"

编辑:

现在我正在重新阅读您的问题,看起来您已经在调用countries.ToList(),但使用的是Items.AddRange。我在尝试时看到了同样的事情。您似乎必须设置DataSource而不是使用Items.AddRangeSelectedValue才能正常工作。