2013-04-10 37 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情况。 如果有任何错误,您将弹出“未选择操作”消息。