在monthCalendar控件

时间:2015-10-04 15:33:59

标签: c# loops datetime monthcalendar

我有一个通过RS232控制继电器板的程序,该程序允许设置多个时间表,以便根据用户需要打开/关闭这些继电器。

我正在尝试使用monthCalendar控件显示按日期打开/关闭的继电器的月视图。

当monthCalendar控制月份向前或向后滚动时,我想迭代控件上显示的所有日期,但我没有找到控件的可枚举成员来执行此操作。也许我会以错误的方式解决这个问题,并愿意就如何做到这一点提出建议。

在迭代日期时,每个日期都会传递给一个返回true为false的类成员,根据这个结果,我会在网格或列表框中添加一个条目。

以下是我想要做的一个粗略的例子:

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

1 个答案:

答案 0 :(得分: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...
}