【发布时间】:2019-01-07 12:52:39
【问题描述】:
这是我的代码。我正在尝试使用数字上下创建 DateTime。我得到异常
System.ArgumentOutOfRangeException: '1/3/0001 12:00:00 AM 的值' 对“值”无效。 'Value' 应介于 'MinDate' 和 '最大日期'。 参数名称:值'
我尝试使用数字上下的验证事件,但它没有触发。
public DateTime ToDateTime(DateTime referencetime = default(DateTime))
{
if (referencetime == default(DateTime)) referencetime = DateTime.Now;
DateTime returntime = referencetime;
try
{
returntime = new DateTime(
!Year.IsRelative ? Year.Value : referencetime.Year,
!Month.IsRelative ? Month.Value : referencetime.Month,
!Day.IsRelative ? Day.Value : referencetime.Day,
!Hour.IsRelative ? Hour.Value : referencetime.Hour,
!Minute.IsRelative ? Minute.Value : referencetime.Minute,
!Second.IsRelative ? Second.Value : referencetime.Second
);
if (Year.IsRelative)
returntime = returntime.AddYears(Year.Value);
if (Month.IsRelative)
returntime = returntime.AddMonths(Month.Value);
if (Day.IsRelative)
returntime = returntime.AddDays(Day.Value);
if (Hour.IsRelative)
returntime = returntime.AddHours(Hour.Value);
if (Minute.IsRelative)
returntime = returntime.AddMinutes(Minute.Value);
if (Second.IsRelative)
returntime = returntime.AddSeconds(Second.Value);
}
catch (Exception e) { }
我想取消 outofRange 异常结果的 value_changed 事件。我该怎么做?
【问题讨论】:
-
您的
try catch是否正在处理该特定错误? -
哇,这个建筑概念很聪明!你真的确定你的控件实际上只是接受数字吗?确保“候选”值是有效值。试试 DateTime.TryParse
-
是DateTimePicker产生的异常,可能是MonthCalendar。我们看不到它。这些控件的最小允许日期是 1753 年 1 月 1 日,即英格兰从儒略历切换到公历的那一天。较早的日期毫无意义。强烈争取 UI 设计不允许用户选择无效日期或当前和自定义日期/时间部分的奇怪组合。既然您似乎无论如何都在使用 DateTimePicker,那么您不妨改用它。