组合框顶部项目

时间:2014-09-19 07:18:14

标签: c# winforms

我有windows forms项目和DateTime类型列表,我想在combobox中绑定它。我希望在组合框的顶部有文本All。怎么做?

List<DateTime> dueDates = manager.GetUniqueDueDates();
cbDates.DataSource = dueDates;

例如

All
1/1/2001
1/1/2002
1/1/2003

5 个答案:

答案 0 :(得分:1)

您可以使用items属性的Insert方法添加额外项目。

cbDates.Items.Insert(0, "All");

这样,您的数据源不需要是字符串列表。

<强>更新

正如@Hassan Nisar在评论中所提到的,如果你绑定数据源它将无法工作,但你可以使用循环添加项目(参考@Hassan Nisar的答案为例)。

答案 1 :(得分:1)

List<DateTime>绑定后,您无法插入项目。

将引发参数异常 Items collection cannot be modified when the DataSource property is set.

跳过与数据源的绑定,并通过遍历列表添加项目:

List<DateTime> dueDates = manager.GetUniqueDueDates();
//cbDates.DataSource = dueDates;

foreach (var date in dueDates)
     cbDates.Items.Add(date)

cbDates.Items.Insert(0, "All");

答案 2 :(得分:0)

你需要将dueDtes列表作为字符串,因为“All”是我们无法在日期时间列表中添加的字符串。

List<string> dueDates = manager.GetUniqueDueDates();
<\ n>在GetUniqueDueDates函数中,您需要添加“All”

public List<string> GetUniqueDueDates()
{
List<string> uniqueDate=new List<string>();
uniqueDate.add("All");

//Rest of your code


}

答案 3 :(得分:0)

由于您的列表是DateTime类型,因此您应首先将其设置为List以使其在添加“All”时正常工作

List<string> dueDates = new List<string>();
dueDates.Add("All");
dueDates.Add(new DateTime(2001,03,01).ToString());
dueDates.Add(new DateTime(2002, 04, 01).ToString());
dueDates.Add(new DateTime(2003, 05, 01).ToString());
cbDates.DataSource = dueDates;

答案 4 :(得分:0)

尝试在添加另一个1后对所有项目进行排序,因为 All 之后的所有 dateTime 。 类似的东西:

例如: a 被认为是您的 dataSource

comboBox1.Items.AddRange(a.OrderBy(c => c).ToArray());
其他任何事情之前

和属性为true:

comboBox1.Sorted = true;