From 6685f7937994c1287aef38e469442516fe47070f Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Sat, 7 Jan 2012 04:35:40 +0000 Subject: [PATCH] TimePicker/DateTimeUpDown : fixed exception when the date/time is set to DateTime.Min and then trying to subtract date/time form that value. --- .../Implementation/DateTimeUpDown.cs | 105 ++++++++++-------- 1 file changed, 57 insertions(+), 48 deletions(-) diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs index 11f72598..200bf050 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs @@ -505,55 +505,64 @@ namespace Microsoft.Windows.Controls if (info == null) info = _dateTimeInfoList[0]; - switch (info.Type) + try { - case DateTimePart.Year: - { - Value = ((DateTime)Value).AddYears(value); - break; - } - case DateTimePart.Month: - case DateTimePart.MonthName: - { - Value = ((DateTime)Value).AddMonths(value); - break; - } - case DateTimePart.Day: - case DateTimePart.DayName: - { - Value = ((DateTime)Value).AddDays(value); - break; - } - case DateTimePart.Hour12: - case DateTimePart.Hour24: - { - Value = ((DateTime)Value).AddHours(value); - break; - } - case DateTimePart.Minute: - { - Value = ((DateTime)Value).AddMinutes(value); - break; - } - case DateTimePart.Second: - { - Value = ((DateTime)Value).AddSeconds(value); - break; - } - case DateTimePart.Millisecond: - { - Value = ((DateTime)Value).AddMilliseconds(value); - break; - } - case DateTimePart.AmPmDesignator: - { - Value = ((DateTime)Value).AddHours(value * 12); - break; - } - default: - { - break; - } + switch (info.Type) + { + case DateTimePart.Year: + { + Value = ((DateTime)Value).AddYears(value); + break; + } + case DateTimePart.Month: + case DateTimePart.MonthName: + { + Value = ((DateTime)Value).AddMonths(value); + break; + } + case DateTimePart.Day: + case DateTimePart.DayName: + { + Value = ((DateTime)Value).AddDays(value); + break; + } + case DateTimePart.Hour12: + case DateTimePart.Hour24: + { + Value = ((DateTime)Value).AddHours(value); + break; + } + case DateTimePart.Minute: + { + Value = ((DateTime)Value).AddMinutes(value); + break; + } + case DateTimePart.Second: + { + Value = ((DateTime)Value).AddSeconds(value); + break; + } + case DateTimePart.Millisecond: + { + Value = ((DateTime)Value).AddMilliseconds(value); + break; + } + case DateTimePart.AmPmDesignator: + { + Value = ((DateTime)Value).AddHours(value * 12); + break; + } + default: + { + break; + } + } + } + catch + { + //this can occur if the date/time = 1/1/0001 12:00:00 AM which is the smallest date allowed. + //I could write code that would validate the date each and everytime but I think that it would be more + //efficient if I just handle the edge case and allow an exeption to occur and swallow it instead. } //we loose our selection when the Value is set so we need to reselect it without firing the selection changed event