迭代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是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...
}