2013-04-04 36 views
0

我在我的程序中有兩個下拉菜單和三個按鈕。當我運行表單時,我希望兩個下拉列表是空白的,並且要禁用其中一個按鈕。我有這個設置並且工作正常,但是我從那以後一直在研究程序中的其他類和表單,並且回過頭來細化一些事情,我發現代碼不再有效。特別是線路有:表單中的某些代碼行未被執行?

private void mainForm_Load(object sender, EventArgs e) 
{ 
    this.roomsTableAdapter.Fill(this.bookingSystemDatabaseDataSet.rooms); 
    timeBox.ResetText(); 
    roomBox.ResetText(); 
    updateTextOutput(); 
    bookButton.Enabled = false; 
} 

第一行使用一個TableAdapter來填補相關的「房間」下拉框,其工作,然而這行之後的代碼似乎並沒有在所有執行。評論這條線意味着它們被執行,但顯然我的'房間'下拉將是空的。我已經嘗試將這些行移動到表單的主要執行點,但同樣的事情發生。

此外,我試圖填補 '房間' 下拉在 '其他方式',包括:

roomBox.DataSource = roomsTableAdapter.Fill(bookingSystemDatabaseDataSet.rooms); 

和:

roomsTableAdapter.Fill(bookingSystemDatabaseDataSet.rooms); 
roomBox.DataSource = roomsTableAdapter; 

當然,這些嘗試都非常相似,但我想我會試一試。事實證明,每種情況下都會發生完全相同的事情; 'roomBox'被填滿,然後代碼的其餘部分被忽略。通過加強我已經認爲是正確的步驟進行調試,代碼甚至不會被執行,據我所知。沒有錯誤,程序運行,爲什麼這些行被忽略?

+0

真的不能看到這裏發生了什麼問題。雖然這不是一個大問題,但我非常感謝您提供的任何幫助。 – the1mike1man 2013-04-04 14:26:39

+1

你確定**沒有任何異常被拋出?請參閱http://stackoverflow.com/questions/1583351/silent-failures-in-c-seemingly-unhandled-exceptions-that-does-not-crash-the-pr – sgmoore 2013-04-04 16:50:10

+2

要從@sgmoore跟進,請按(至少在VS2008中)Cntl + Alt + E調出句柄異常。點擊'Thrown'下的'Common Language Runtime Exceptions'複選框。 – gunr2171 2013-04-04 16:52:11

回答

1

雖然代碼似乎運行良好,但實際上拋出了一個異常 - 正如sgmoore所懷疑的那樣,但它並沒有導致中斷。 gunr2171給出了預測:

按Ctrl + Alt + E打開例外窗口,然後在Common Language Runtime Exceptions的對話框中打勾Thrown。這使我看到一個錯誤(Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.)實際上很明顯。我通過刪除數據集中對房間的引用並重新創建它來解決此問題。

在sgmoore和gunr2171的幫助下解決。

+0

我個人建議你總是檢查這個值。未知的錯誤越少越好。 – gunr2171 2013-04-04 17:13:35