我有一个通过RS232控制继电器板的程序,该程序允许设置多个时间表,以便根据用户需要打开/关闭这些继电器。
我正在尝试使用monthCalendar控件显示按日期打开/关闭的继电器的月视图。
当monthCalendar控制月份向前或向后滚动时,我想迭代控件上显示的所有日期,但我没有找到控件的可枚举成员来执行此操作。也许我会以错误的方式解决这个问题,并愿意就如何做到这一点提出建议。
在迭代日期时,每个日期都会传递给一个返回true为false的类成员,根据这个结果,我会在网格或列表框中添加一个条目。
以下是我想要做的一个粗略的例子:
foreach (DateTime date in monthCalendar1.*"Dates"*)
{
if (Scheduler.TurnOn(date))
{
Console.WriteLine("Would turn on: " + date.ToString());
}
}
答案 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...
}