0

我正在使用的 TimePicker 有这个问题。当我没有选择任何时间时,我收到此错误:

An exception of type 'System.InvalidOperationException'

发生异常的地方在这一行:

DateTime break1S = (DateTime)startBreak1.Value;

问题在于,当您未在选择器中设置任何值时,它会设置默认值。但它为什么不使用它呢?以下是局部变量的样子:

在这里你看到 break1S 有一个值

您可以看到 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);
4

3 回答 3

2

好吧,你应该检查一下,在那一刻“startBreak1”项目中有什么。可能是从 startBreak1.Value 转换为 DateTime 导致了此错误。

Break1S 有一个值,但这与问题无关,因为 ir 是 0001 年 1 月 1 日 - 任何 DateTime 结构的初始值。问题很可能是由于演员表(如果 startBreak1.Value 是 DateTime? 或 Nullable,那么您的选择是使用另一种类型的构造,即

DateTime break1S = startBreak1.Value.HasValue ? startBreak1.Value.Value : DateTime.MinValue;

请注意,您可以使用 DateTime.Now、DateTime.Today、DateTime.Now.AddMinutes(-10) 或任何您认为合适的默认值来代替 DateTime.MinValue,如果 startBreak1.Value 没有设置实际值。)

于 2013-06-06T09:10:53.153 回答
0

我不是 Windows Phone 专家,但在我看来 TimePicker 控件的 Value 属性被定义为 DateTime?表示可以为空的 DateTime。
当您尝试将其分配给 DateTime 变量(不能接受空值)并且 TimePicker 为空时,您会得到 InvalidOperationException

你可以试试

startBreak1  = startBreak1.Value ?? DateTime.MinValue;
于 2013-06-06T09:07:04.550 回答
0

检查 DateTimePicker 的“MinDate”和“MaxDate”属性。

'1/1/0001 12:00:00 AM' 可能不会落在他们之间。

于 2013-06-06T09:08:06.233 回答