2013-06-06 91 views
0

使用我正在使用的TimePicker时遇到此问题。 当我没有选择任何时候我收到此错误:DateTime,类型'System.InvalidOperationException'的异常

An exception of type 'System.InvalidOperationException' 

如果出现异常是在这条线:

DateTime break1S = (DateTime)startBreak1.Value; 

的问题是,它设置一个默认值,当你不设置选取器中的任何值。 但为什么不用它呢?下面是局部变量什么样子:

Here you see that break1S have a 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

请显示异常的确切错误信息。这意味着要阅读,因为它大部分时间都包含重要信息。 –

+0

您是否检查过startBreak1的值?你有没有检查它是否为空?当您调试时startBreak1是什么? – Jenninha

回答

2

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

Break1S有一个值,但这与问题无关,因为ir是0001年1月1日 - 任何DateTime结构的初始值。问题是最有可能是因为投的(如果startBreak1.Value是日期时间?或为空,那么你的choise是使用另一种类型的结构,而不是,即

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

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

+0

这使我的一天。它真的工作,因为我想。非常感谢真棒回答。 – mogren3000

0

我不是的Windows Phone的专家,但在我看来,一个TimePicker控件的Value属性定义为日期时间?意味着可以为空的DateTime。
当您尝试将其分配给一个DateTime变量(不能接受空值)和TimePicker是空你的出现InvalidOperationException

您可以用

startBreak1 = startBreak1.Value ?? DateTime.MinValue; 
0

检查“MinDate和尝试MAXDATE '你的DateTimePicker的属性。 '

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

相关问题