Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置日期时间时出现可笑的mindate maxdate错误_C#_Datetimepicker_Maxdate_Mindate - Fatal编程技术网

C# 设置日期时间时出现可笑的mindate maxdate错误

C# 设置日期时间时出现可笑的mindate maxdate错误,c#,datetimepicker,maxdate,mindate,C#,Datetimepicker,Maxdate,Mindate,我正在用VS2013用c#编写一个桌面应用程序。在我看来,我犯了一个荒谬的错误,这是不应该产生的。我正在代码中的某个地方设置DateTimePicker的MinDate和MaxDate属性,方法如下: DateTime minDate = DateTime.Parse(...); DateTime maxDate = DateTime.Parse(...); ... if (maxDate < dtpManuelFirst.MinDate) { dtpManuelFirst.M

我正在用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;
    }
}
DateTime minDate=DateTime.Parse(…);
DateTime maxDate=DateTime.Parse(…);
...
if(maxDatedtpManuelFirst.MaxDate)
{
dtpManuelFirst.MaxDate=MaxDate;
dtpManuelFirst.MinDate=MinDate;
}
其他的
{
dtpManuelFirst.MinDate=MinDate;
dtpManuelFirst.MaxDate=MaxDate;
}
}

最初我知道minDate值总是小于maxDate值。当minDate大于dtpManuelFirst.MaxDate时(如第二个if条件),它会毫无问题地更新MaxDate属性,而我在更新minDate属性时收到错误“值对minDate无效。minDate必须小于MaxDate”。这是荒谬的,因为我已经在检查这些条件。此外,当我在调试模式下检查时,这些值不支持该错误。任何帮助都会很好

你所有决定的最终结果是你总是在设定

dtpManuelFirst.MinDate = minDate;
dtpManuelFirst.MaxDate = maxDate;
为什么不立即这样做呢不管怎样,当你做同样的事情时,你不需要所有的if-else分支

如果仍然存在问题,请先将
dtpManuelFirst.MaxDate
first设置为非常大的值

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

我知道这条线很旧了,但也许这条线可以帮助下一个人。。。也许他们应该考虑添加“完整”的数据时间范围:包括小时、分钟和秒。
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);

在设置实际值之前,先将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;
  }
}
dtpManuelFirst.MinDate=DateTimePicker.MinDateTime;
dtpManuelFirst.MaxDate=DateTimePicker.MaximumDateTime;
if(maxDatedtpManuelFirst.MaxDate)
{
dtpManuelFirst.MaxDate=MaxDate;
dtpManuelFirst.MinDate=MinDate;
}
其他的
{
dtpManuelFirst.MinDate=MinDate;
dtpManuelFirst.MaxDate=MaxDate;
}
}

它给出错误2014年4月19日对MinDate无效。MinDate必须小于MaxDate。然而,我指定MinDate为2014年4月18日,MaxDate为2014年4月19日。这绝对是一个荒谬的错误:(@ceskin,但您在
MaxDate
之前分配了
MinDate
。这似乎就是原因。
MaxDate
在您设置
MinDate
时尚未设置为2014年4月19日,可能是其他原因。