[英]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.