-3

これが私のコードです:

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

addNewRecordそしてeditCurrentRecord、私がチェックした両方のブール値がtrue値を持っています。上記のようにすると、メッセージボックスはブール値がfalse. ただし、コメントアウトするだけで、意図したとおりELSE IFに続行されます。ELSEここで何か基本的なことが欠けていますか? ご意見ありがとうございます。

編集: 両方のメッセージ ボックスに 1 つだけが表示されるわけではありません。MessageBox.Show(addNewRecord.ToString()); を使用して IF ステートメントの前に両方のブール値をチェックしています;他のブール値についても同じです。それらは意図したとおりに機能しています。この問題は、else if または 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.");
      }

私はまだこれに困惑しているので、他の誰かがなぜこれが起こったのかを言うことができれば、私はチェックし直します. みんなのすべての提案に感謝します。

4

2 に答える 2

0

あなたのアルゴリズムは間違っています。addNewRecord と editCurrentRecord の両方が true の場合にのみ、最後の else ケースに進みます。いずれかが間違っている場合は、「アクションが選択されていません」というメッセージが表示されます。

于 2013-04-10T14:17:51.217 に答える