迭代monthCalendar控件中的日期

本文关键字:日期 控件 monthCalendar 迭代 | 更新日期: 2023-09-27 18:16:08

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

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

当monthCalendar控件month向前或向后滚动时,我想迭代控件上显示的所有日期,但我没有找到控件的可枚举成员来执行此操作。也许我做这件事的方式不对,我愿意听取关于如何完成这件事的建议。

在迭代日期时,每个日期被传递到一个类成员中,该成员返回true或false,根据这个结果,我将向网格或列表框添加一个条目。

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

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

迭代monthCalendar控件中的日期

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...
}