C# 组合框上的顶部项目

C# 组合框上的顶部项目,c#,winforms,C#,Winforms,我有windows窗体项目和类型列表DateTime,我想在组合框中绑定它们。我希望在组合框的顶部有文本All。怎么做 List<DateTime> dueDates = manager.GetUniqueDueDates(); cbDates.DataSource = dueDates; 您需要以字符串形式获取dueDtes列表,因为“All”是我们无法添加到Datetime列表中的字符串 List<string> dueDates = manager.GetUniq

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

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

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

List<string> dueDates = manager.GetUniqueDueDates();
List dueDates=manager.GetUniqueDueDates();
在GetUniqueDueDates函数中,需要添加“全部”

public List GetUniqueDueDates()
{
List uniqueDate=新列表();
唯一日期。添加(“全部”);
//代码的其余部分
}

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

cbDates.Items.Insert(0, "All");
这样,数据源就不需要是字符串列表

更新


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

由于您的列表类型为DateTime,因此在添加“All”时,应首先将其设置为list以使其起作用

List dueDates=新列表();
到期日。添加(“全部”);
添加(新的日期时间(2001,03,01).ToString());
添加(新的DateTime(2002,04,01).ToString());
Add(新的DateTime(2003,05,01).ToString());
cbDates.DataSource=dueDates;

使用
列表绑定后,无法插入项

将引发参数异常设置DataSource属性时,无法修改项集合。

跳过与数据源的绑定,并通过迭代列表添加项:

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

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

cbDates.Items.Insert(0, "All");
List dueDates=manager.GetUniqueDueDates();
//cbDates.DataSource=dueDates;
foreach(dueDates中的var日期)
cbDates.Items.Add(日期)
cbDates.项目。插入(0,“全部”);

在添加另一个1后,尝试对所有项目进行排序,因为它毕竟是alldateTime。 比如:

e、 g:a被认为是您的数据源

comboBox1.Items.AddRange(a.OrderBy(c => c).ToArray());
和属性设置为true,然后执行其他操作:

comboBox1.Sorted = true;

最简单的方法是将其作为第一个元素添加到您的数据源中。将combobox与数据源绑定后,它是否工作?设置数据源属性时,无法修改参数异常
项集合。
@hassansar是的,您是对的,我将更新答案。我检查了它,没有这样的问题。您可能已经在某个地方设置了数据源。如果类型为
DateTime
(打字),那么将源代码保留为
object
,这样您就可以始终使用
Items.OfType()
来重新检索日期。我这样做了,但在设置数据源属性时无法修改“我获取项目”集合。我没有设置datasource属性。请使用回答中提到的
foreach
循环。不要将combobox与数据源绑定。只需在列表上迭代即可。在重复添加项目之前,请确保清除以前的项目。
List<DateTime> dueDates = manager.GetUniqueDueDates();
//cbDates.DataSource = dueDates;

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

cbDates.Items.Insert(0, "All");
comboBox1.Items.AddRange(a.OrderBy(c => c).ToArray());
comboBox1.Sorted = true;