2013-06-06 95 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'可能不會落在它們之間。

相關問題