c# if else if语句事件在else if之前触发

c# If else if statement event triggers before else if does

所以我有隐藏按钮,我只想在达到 maxAttempts 时显示,使用下面的代码,按钮在第一次错误尝试后打开。另外,当我在这里时,我想在游戏结束时禁用按钮和文本框,但是当我写 btncheckAnswer.disable 和 txtResult.disable 时,我看到了异常。

有什么建议吗?

 private void btnCheckAnswer_Click(object sender, EventArgs e)
    {

        var userAnswer = double.Parse(txtResult.Text);
        if (!puzzle.CheckTheAnswer(userAnswer))
        {
            MessageBox.Show("Wrong");
            numAttempts++;
            if (numAttempts < maxAttempts)
            {  // UpdateImage();
                NextQuestion();
            }
            else
                if (numAttempts == maxAttempts)
                {
                    MessageBox.Show("Game Over");
                    btnClose.Show();
                    btnNewGame.Show();
                    //btnCheckAnswer.disable();
                    //txtResult.disable;()
                    //Stop the game ();
                    //Block text box from receiving data

                    return;
                }

        }

        else MessageBox.Show("Smarty Pants, You're Right!!");
        {
            NextQuestion();
        }
        return;

您的 "Smarty Pants" 行需要在大括号内。

else 
{
    MessageBox.Show("Smarty Pants, You're Right!!");
    NextQuestion();
}

就目前而言,这是您的 "else" 子句中的唯一一行,这意味着 NextQuestion() 将始终触发。

稍微补充一下@Joe 的回答(这将是一条评论,除非它需要格式化),这就是 else 代码部分的样子,格式正确:

else 
    MessageBox.Show("Smarty Pants, You're Right!!");

{
    NextQuestion();
}

请注意 {} 块没有附加到 if,它只是一个独立的块。

编辑:这只解决了问题的第二部分。

要禁用控件,请尝试将启用设置为 false。

btnCheckAnswer.Enabled = false;