关于mcCalendar.SelectionRange限制?

时间:2013-08-22 08:38:47

标签: c# windows date datetime

我有这段代码

 for (int day =1; days >= day; day++)
 {
     onemonth.Add(new DateTime(year,month,day));
 }

  mcCalendar.SelectionRange = new SelectionRange(onemonth[0], onemonth[onemonth.Count - 1]);

因此,这些代码应该获取该月的日期,并将该月的每一天的日期时间创建到列表中。

现在。当问题开始时 McCalendar.SelectionRange不会从第1天到第31天选择,它只选择1到30。 今天是八月,这个月有31天。我怎样才能选择本月的所有日期?包括8月31日。

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法获取一个月内的天数

DateTime.DaysInMonth(year, month);

然后运行你的循环直到你获得的天数。

顺便提一下,如果你必须选择当月的所有日子。你不需要任何循环

public DateTime StartOfMonth(DateTime dateTime)
{
      return new DateTime(dateTime.Year, dateTime.Month, 1);
}
public DateTime EndOfMonth(DateTime dateTime)
{
      DateTime firstDayOfTheMonth = new DateTime(dateTime.Year, dateTime.Month, 1);
      return firstDayOfTheMonth.AddMonths(1).AddDays(-1);
}
private void button1_Click_2(object sender, EventArgs e)
{
      DateTime startMonth = StartOfMonth(DateTime.Now);
      DateTime endMonth = EndOfMonth(DateTime.Now);
      monthCalendar1.SelectionRange = new SelectionRange(startMonth, endMonth);
}

答案 1 :(得分:0)

我看到你在for循环中使用了“days”变量。 你应该把它初始化为每个月的天数,每个月:

int days = System.DateTime.DaysInMonth(year, month);