如何计算在C#中使用MonthCalendar的天数?

时间:2015-02-08 23:46:11

标签: c# winforms date-range monthcalendar

我添加了日历表单,它不会让我选择2个日期。它将每次点击分配给开始日期,所以当我尝试这个时,它总是告诉我差异是1,开始日期总是变成我下次点击的是什么?

是否可以将其默认为开始日期的今天日期,然后让其他所有点击确定结束日期?当我尝试在datechanged事件处理程序中指定今天的日期时,它不会让我更改月份,因为它一直关注startdate

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
    numDays = Convert.ToInt32((monthCalendar1.SelectionEnd - monthCalendar1.SelectionStart).TotalDays);
    MessageBox.Show("num " + numDays);
}

2 个答案:

答案 0 :(得分:0)

// Sets the Month Calenders Min & Max to days in current month.
DateTime dt = DateTime.Today;
DateTime firstDay = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0);
DateTime lastDay = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));

dateMonthCalender.MinDate = firstDay;
dateMonthCalender.MaxDate = lastDay;

以上内容将min和max设置为当月的天数

如果你想将min设置为今天

dateMonthCalender.MinDate = DateTime.Now;

希望有所帮助..

答案 1 :(得分:0)

好的,所以宣布两个整数并分配一个到选定日期,另一个分配到今天并创建自己的方法

 int selectedDay;
 int todayValue;

DateTime firstDay = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0);

DateTime today = DateTime.Today;
     string todayShort = today.ToShortDateString();
     string thisDay = todayShort.Substring(0, 2);

     todayValue = Convert.ToInt32(thisDay);

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
  {
     // Shorten date format to day and assign it.
     string dMC = dateMonthCalender.SelectionRange.Start.ToShortDateString();
     string takeDMCDay = dMC.Substring(0, 2);
     selectedDay = Convert.ToInt32(takeDay);

}