我正在使用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属性的信息。这是荒谬的,因为我已经检查了这些条件。此外,当我检查调试模式时,这些值不支持错误。任何帮助都会很棒!
答案 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;
}
}