繁体   English   中英

组合框上的顶级商品

[英]Top Item On Combo Box

我有windows forms项目和想要绑定在combobox DateTime类型的List。 我想在组合框的顶部输入文字All 怎么做 ?

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

例如

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

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

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

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

更新资料

就像@Hassan Nisar在评论中提到的那样,如果绑定数据源将不起作用,但是可以使用循环添加项(例如,请参阅@Hassan Nisar的答案)。

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");

您需要以字符串形式获取dueDtes列表,因为“全部”是我们无法在Datetime列表中添加的字符串。

List<string> dueDates = manager.GetUniqueDueDates();

在GetUniqueDueDates函数中,您需要添加“全部”

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

//Rest of your code


}

由于您的列表的类型为DateTime,因此,当您添加“全部”时,应首先将其添加到列表中以使其起作用

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;

尝试添加其他1,因为其所有的日期时间后, 所有以后的所有项目进行排序。 就像是:

例如: a被假定为您的dataSource

comboBox1.Items.AddRange(a.OrderBy(c => c).ToArray());

并将属性设置为true之前:

comboBox1.Sorted = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM