2013-04-10 35 views
-3

這裏是我的代碼:否則,如果求值BOOL錯誤

if (addNewRecord == false) 
     { MessageBox.Show("No action selected. \nSave cancelled."); } 
else if (editCurrentRecord == false) 
     { MessageBox.Show("No action selected. \nSave cancelled."); } 
else{.....} 

addNewRecordeditCurrentRecord是我檢查這兩個布爾變量有true值。當我按照上述方式操作時,信息框仍然會顯示爲bools爲false。但是,如果我只註釋掉ELSE IF,它將按照預期繼續使用ELSE。我在這裏錯過了什麼?感謝您的任何意見。

編輯:兩個messageboxes不顯示只有一個。我正在用MessageBox.Show(addNewRecord.ToString())檢查IF語句之前的兩個bools的值;而另一個bool則是相同的。他們按預期工作。這個問題只會發生在我試圖評估兩個bools時,或者使用OR語句或者使用OR語句。

這裏是所有相關代碼:

namespace E_Z_Rent 
{ 
public partial class Bookings : Form 
{ 
    bool addNewRecord = false; 
    bool editCurrentRecord = false; 

    public Bookings() 
    { 
     InitializeComponent(); 
    } 

    private void bookingsBindingNavigatorSaveItem_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(addNewRecord.ToString()); 
     MessageBox.Show(editCurrentRecord.ToString()); 
     if (addNewRecord == false) 
     { MessageBox.Show("No action selected. \nSave cancelled."); } 
     else if (editCurrentRecord == false) 
     { MessageBox.Show("No action selected. \nSave cancelled."); } 
     else 
     { 
      MessageBox.Show("OK"); 
     } 
    } 

    private void EditFieldsCheckBox_CheckedChanged(object sender, EventArgs e) 
    { 
     if (EditFieldsCheckBox.Checked == true) 
     { 
      editCurrentRecord = true; 
     } 
     else 
     { 
      editCurrentRecord = false; 
     } 
    } 

    private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) 
    { 
     addNewRecord = true; 
    } 
} 
} 

我有它的工作如預期做:

if (addNewRecord == true || editCurrentRecord == true){ 
      MessageBox.Show("OK"); 
     } 
     else 
     { 
      MessageBox.Show("No action selected. \nSave cancelled."); 
     } 

我仍然這樣puzzeled因此,如果任何人都可以說,爲什麼會這樣我會檢查回來。感謝所有人的建議。

+5

你說的是不可能的。 – 2013-04-10 12:26:32

+0

你什麼時候執行該代碼,以及什麼時候檢查過? – 2013-04-10 12:27:00

+2

嘗試重構if(!addNewRecord ||!editCurrentRecord)){MessageBox.show(...); } else {....} – vidario 2013-04-10 12:27:15

回答

1

看來你想這樣做;

if (addNewRecord == false || editCurrentRecord == false) 
     { MessageBox.Show("No action selected. \nSave cancelled."); } 
else{.....} 
+1

難道你不是指'||'而不是'&&'? – DGibbs 2013-04-10 12:44:21

+0

起初我寫了||但是當我被暗示時,我建議&&。正如其他人所說,我thik,我們正在談論關於對問題的誤解。 – aliassce 2013-04-10 12:46:28

0

您的算法錯誤。 只有當addNewRecord和editCurrentRecord都爲真時,纔會進入最後的else情況。 如果有任何錯誤,您將彈出「未選擇操作」消息。