如何取消numericupdown_valuechanged事件?

时间:2019-01-04 04:54:49

标签: c# winforms

这是我的代码。我正在尝试使用数字上下创建DateTime。我有异常

  

System.ArgumentOutOfRangeException:'值为'1/3/0001 12:00:00 AM'   对于“值”无效。 “值”应介于“ MinDate”和“ MinDate”之间   “ MaxDate”。       参数名称:值'

我尝试将验证事件用于数字上下转换,但随后未触发。

 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) { }

DateTime.cs Design

我想取消outofRange异常结果的value_changed事件。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以在属性窗口上以及通过编程方式设置 NumericUpDown 控件的 Minimum Maximum 属性,以防止不必要的范围。

还可以使用4008事件来取消控件或将其设置为任何其他值。我使用此事件将十进制值转换为int(用户可以输入范围内的任何十进制值)。请参阅完整的工作项目here

如果您有其他疑问,请告诉我。