使用我正在使用的TimePicker出现此问题。 当我没有选择任何时候我收到此错误:
An exception of type 'System.InvalidOperationException'
发生异常的地方是这一行:
DateTime break1S = (DateTime)startBreak1.Value;
问题是当你在选择器中没有设置任何值时它会设置一个默认值。 但为什么不使用呢?以下是局部变量的样子:
你可以看到break1S有一个值,所以问题是什么。
以下是整个代码:
DateTime date = (DateTime)datePicker.Value;
DateTime start = (DateTime)startingTime.Value;
DateTime end = (DateTime)endingTime.Value;
DateTime break1S = (DateTime)startBreak1.Value;
DateTime break1E = (DateTime)endBreak1.Value;
DateTime break1S = (DateTime)startBreak1.Value;
DateTime break1E = (DateTime)endBreak1.Value;
DateTime break2S = (DateTime)startBreak2.Value;
DateTime break2E = (DateTime)endBreak2.Value;
_nestedDateStart = new DateTime(date.Year, date.Month, date.Day, start.Hour, start.Minute, 0);
_nestedDateEnd = new DateTime(date.Year, date.Month, date.Day, end.Hour, end.Minute, 0);
_nestedDateStartBreak1 = new DateTime(date.Year, date.Month, date.Day, break1S.Hour, break1S.Minute, 0);
_nestedDateEndBreak1 = new DateTime(date.Year, date.Month, date.Day, break1E.Hour, break1E.Minute, 0);
答案 0 :(得分:2)
好吧,你应该检查那一刻“startBreak1”项目中的内容。可能是从startBreak1.Value到DateTime的强制转换导致此错误。
Break1S有一个值,但这与问题无关,因为ir是1月1日0001 - 任何DateTime结构的初始值。问题很可能是因为强制转换(如果startBreak1.Value是DateTime?或Nullable,那么你的选择是使用另一种类型的构造,即
DateTime break1S = startBreak1.Value.HasValue ? startBreak1.Value.Value : DateTime.MinValue;
请注意,而不是DateTime.MinValue您可以使用DateTime.Now,DateTime.Today,DateTime.Now.AddMinutes(-10)或您认为应该适当的任何内容默认情况下,如果startBreak1.Value没有设置实际值。 )
答案 1 :(得分:0)
我不是Windows Phone的专家,但在我看来,TimePicker控件的Value属性被定义为DateTime?意思是可以为空的DateTime 当您尝试将其分配给DateTime变量(不能接受空值)并且TimePicker为null时,您将获得InvalidOperationException
您可以尝试使用
startBreak1 = startBreak1.Value ?? DateTime.MinValue;
答案 2 :(得分:0)
检查DateTimePicker的'MinDate'和'MaxDate'属性。
'1/1/0001 12:00:00 AM'可能不会落在他们之间。