在 monthCalendar 控件中迭代日期
Iterate dates in monthCalendar control
我有一个通过 RS232 控制继电器板的程序,该程序允许设置多个时间表,以便根据用户需要 on/off 打开这些继电器。
我正在尝试使用 monthCalendar 控件来显示按日期 on/off 继电器的每月视图。
当向前或向后滚动 monthCalendar 控件的月份时,我想迭代控件上显示的所有日期,但我找不到控件的可枚举成员来执行此操作。也许我以错误的方式解决了这个问题,并且愿意接受有关如何实现这一点的建议。
在迭代日期时,每个日期都传递给一个 class 成员,该成员 returns true of false,基于此结果,我将在网格或列表框中添加一个条目。
这是我想做的粗略示例:
foreach (DateTime date in monthCalendar1.*"Dates"*)
{
if (Scheduler.TurnOn(date))
{
Console.WriteLine("Would turn on: " + date.ToString());
}
}
MonthCalendar 是一个 BYOB class。您可以通过扩展方法轻松带来您喜欢的风味:
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...
}
我有一个通过 RS232 控制继电器板的程序,该程序允许设置多个时间表,以便根据用户需要 on/off 打开这些继电器。
我正在尝试使用 monthCalendar 控件来显示按日期 on/off 继电器的每月视图。
当向前或向后滚动 monthCalendar 控件的月份时,我想迭代控件上显示的所有日期,但我找不到控件的可枚举成员来执行此操作。也许我以错误的方式解决了这个问题,并且愿意接受有关如何实现这一点的建议。
在迭代日期时,每个日期都传递给一个 class 成员,该成员 returns true of false,基于此结果,我将在网格或列表框中添加一个条目。
这是我想做的粗略示例:
foreach (DateTime date in monthCalendar1.*"Dates"*)
{
if (Scheduler.TurnOn(date))
{
Console.WriteLine("Would turn on: " + date.ToString());
}
}
MonthCalendar 是一个 BYOB class。您可以通过扩展方法轻松带来您喜欢的风味:
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...
}