2009-09-16 51 views
0

我用填充月份名称的组合框,如下所示:`填充月份和

 var engCulture = new CultureInfo("en-US");    
     cmbAmCul.Items.AddRange(engCulture.DateTimeFormat.MonthNames); 

什么是正确的方式:

  1. 消除 12个月名称后的空白项。
  2. 填充另一个 组合框与天(1-31 || 1-28 || 1-30)根据月份 选择?
+1

请问你为什么需要那个?看起来你试图让一个控件让用户选择一个日期,这对我来说似乎没有必要。 – erelender 2009-09-16 11:01:34

回答

8

在第一部分,你可以使用LINQ查询...

var engCulture = new CultureInfo("en-US");    
cmbAmCul.Items.AddRange(from m in engCulture.DateTimeFormat.MonthNames 
         where !String.IsNullOrEmpty(m) 
         select m); 

的DateTimeInfo类支持日历与13个月,这是为什么发生这种情况。

对于第二部分,我会去像...

for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++) { 
    cmbDay.Items.Add(i.ToString()); 
} 

显然填充年/月,从您选择的值瓦尔。

+0

第一个给出的错误: “不能隐式地将类型'System.Collections.Generic.IEnumerable '转换为'string []'。一个明确的转换存在(你是否缺少一个演员?)“ – Sunder 2009-09-16 11:46:19

+0

做linq查询工作与字符串[] – Sunder 2009-09-16 11:46:58

+0

是的,它工作正常。你能否确认你将.NET 3.5与你的项目相关联,并在页面顶部有一个“使用System.Linq”? – Richard 2009-09-16 11:52:16

3
  1. 使用String.Trim()从开始的字符串的结束&删除空白
  2. DateTime.DaysInMonth(int year, int month)
  3. 使用返回值来填充你的一天组合框

您也可以使用日期时间选择器从标准控制还是不适合你?

+0

我误解了第一点,其他答案更好 – jdehaan 2009-09-16 11:14:28

+1

对于DateTime选取器的+1 – Oliver 2009-09-16 11:15:01

0

您不指定要构建的内容(ASP.NET或Winforms等),但可以使用Calendar控件而不是下拉菜单来改善用户体验。可能点击次数越少,代码越少。