2015-10-04 88 views
-1

我有一个程序,通过RS232控制继电器板,该程序允许设置多个日程安排,以便这些继电器可以根据用户需要打开/关闭。在MonthCalendar控制中的迭代日期

我想使用monthCalendar控件来显示按日期开启/关闭的继电器的月度视图。

当monthCalendar控件月向前或向后滚动时,我想迭代控件上显示的所有日期,但我找不到该控件的可枚举成员来执行此操作。或许我要对这个错误的方式,并愿意接受建议如何做到这一点。

在迭代日期时,每个日期都被传入一个类成员,该成员返回false的真,基于这个结果我将添加一个条目到网格或列表框。

这里是我想要做的一个粗略的例子:

foreach (DateTime date in monthCalendar1.*"Dates"*) 
    { 
     if (Scheduler.TurnOn(date)) 
     { 
      Console.WriteLine("Would turn on: " + date.ToString()); 
     } 
    } 

回答

1

的MonthCalendar是BYOB类。您可以轻松地将您的扩展方法一样的味道:

public static class Extensions { 
    public static IEnumerable<DateTime> Dates(this MonthCalendar cal) { 
     DateTime day = cal.SelectionStart; 
     do { 
      yield return day; 
      day = day.AddDays(1); 
     } while (day <= cal.SelectionEnd); 
    } 
} 

所以你可以这样写:

foreach (var day in monthCalendar1.Dates()) { 
    // etc... 
}