设置日期时间时出现荒谬的错误最大错误

时间:2014-06-27 06:32:13

标签: c# datetimepicker maxdate mindate

我正在使用VS2013在c#中编写桌面应用程序。在我看来,我得到了一个荒谬的错误,这个错误是无法产生的。我正在以这种方式在代码中的某处设置DateTimePicker的MinDate和MaxDate属性:

DateTime minDate = DateTime.Parse(...);
DateTime maxDate = DateTime.Parse(...);

...

if (maxDate < dtpManuelFirst.MinDate)
{
    dtpManuelFirst.MinDate = minDate;
    dtpManuelFirst.MaxDate = maxDate;
}
else
{
    if (minDate > dtpManuelFirst.MaxDate)
    {
        dtpManuelFirst.MaxDate = maxDate;
        dtpManuelFirst.MinDate = minDate;
    }
    else
    {
        dtpManuelFirst.MinDate = minDate;
        dtpManuelFirst.MaxDate = maxDate;
    }
}

最初我知道minDate值总是小于maxDate值。当minDate比第二个if条件大dtpManuelFirst.MaxDate时,它更新MaxDate属性没有问题,而我得到错误“值对于MinDate无效.MinDate必须小于MaxDate。”有关更新MinDate属性的信息。这是荒谬的,因为我已经检查了这些条件。此外,当我检查调试模式时,这些值不支持错误。任何帮助都会很棒!

3 个答案:

答案 0 :(得分:0)

您所有决定的最终结果是您始终设置

dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;

为什么不立即这样做呢? 当你做同样的事情时,你不需要所有那些if-else分支

如果您仍然遇到问题,请先将dtpManuelFirst.MaxDate设置为非常大的首字母。

dtpManuelFirst.MaxDate = DateTime.MaxValue;
dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;

答案 1 :(得分:0)

我知道这个帖子已经很老了,但也许这可能有助于下一个人......也许他们应该考虑添加'完整'的DateTime范围:包括小时,分钟和秒。

DateTime firstDayInMonth = new DateTime(today.Year, today.Month, 1, 0, 0, 0);

DateTime lastDayInMonth = new DateTime(today.Year, today.Month, DateTime.DaysInMonth(today.Year, today.Month), 23, 59, 59);

答案 2 :(得分:0)

在设置实际值之前,将 MinDate 设置为 DateTimePicker.MinDateTime,将 Max Date 设置为 DateTimePicker.MaximumDateTime。如下图:

dtpManuelFirst.MinDate = DateTimePicker.MinDateTime;
dtpManuelFirst.MaxDate = DateTimePicker.MaximumDateTime;

if (maxDate < dtpManuelFirst.MinDate)
{
  dtpManuelFirst.MinDate = minDate;
  dtpManuelFirst.MaxDate = maxDate;
}
else
{
   if (minDate > dtpManuelFirst.MaxDate)
   {
     dtpManuelFirst.MaxDate = maxDate;
     dtpManuelFirst.MinDate = minDate;
   }
  else
  {
    dtpManuelFirst.MinDate = minDate;
    dtpManuelFirst.MaxDate = maxDate;
  }
}