Browse Source

TimePicker/DateTimeUpDown : fixed exception when the date/time is set to DateTime.Min and then trying to subtract date/time form that value.

pull/1645/head
brianlagunas_cp 15 years ago
parent
commit
6685f79379
  1. 105
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs

105
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

Loading…
Cancel
Save