C# 根据正确/不正确答案更改按钮的颜色

C# 根据正确/不正确答案更改按钮的颜色,c#,winforms,C#,Winforms,我搞不懂什么 我希望按钮的背景色根据单击的按钮是正确答案还是错误答案而改变,即如果单击的按钮是正确答案,背景色将变为黄绿色,如果是错误答案,所有错误答案的背景色变为红色,正确答案的背景色为黄绿色,这样用户就可以看到他们的问题是对的还是错的,以及哪个答案是正确的 就像第一个问题出现,有四个按钮,我点击正确的答案,它变成绿色,错误的答案变成红色,但是当我点击下一步,进入下一个问题时,它不再改变颜色。如果我单击其中一个不正确的答案,颜色也不会因为某种原因而改变,只有在我先单击正确的答案时 这四个按钮被

我搞不懂什么

我希望按钮的背景色根据单击的按钮是正确答案还是错误答案而改变,即如果单击的按钮是正确答案,背景色将变为黄绿色,如果是错误答案,所有错误答案的背景色变为红色,正确答案的背景色为黄绿色,这样用户就可以看到他们的问题是对的还是错的,以及哪个答案是正确的

就像第一个问题出现,有四个按钮,我点击正确的答案,它变成绿色,错误的答案变成红色,但是当我点击下一步,进入下一个问题时,它不再改变颜色。如果我单击其中一个不正确的答案,颜色也不会因为某种原因而改变,只有在我先单击正确的答案时

这四个按钮被命名为button4、button5、button6和button7。我拥有的示例代码(所有四个按钮都有此代码):

在btnNext_上,单击我有:

private void btnNext_Click(object sender, EventArgs e)
    {
        // swap panels
        dPanel.Visible = false;
        qPanel.Visible = true;

        button4.BackColor = SystemColors.Control;
        button5.BackColor = SystemColors.Control;
        button6.BackColor = SystemColors.Control;
        button7.BackColor = SystemColors.Control;

        button4.Font = new Font(button4.Font.Name, button4.Font.Size, FontStyle.Regular);
        button5.Font = new Font(button5.Font.Name, button5.Font.Size, FontStyle.Regular);
        button6.Font = new Font(button6.Font.Name, button6.Font.Size, FontStyle.Regular);
        button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Regular);

        if ( qCounter != qSection )
        {
            PickQuestion();
            label5.Text = "Question " + qCounter.ToString() + " of " + qSection.ToString();

            button4.Enabled = true;
            button5.Enabled = true;
            button6.Enabled = true;
            button7.Enabled = true;
        }
        else
        {
            btnNext.Enabled = false;
            label5.Text = "You answered " + qCorrect.ToString() + " questions correctly out of a possible " + qSection.ToString();
        }
    }

非常感谢您对这个问题的任何帮助。

好的,我知道了!在回答按钮的事件处理程序中,始终递增qCorrect,但只检查
qCorrect==1
。如果您单击了第一个答案,
qCorrect
将为1,当您第二次回答时,
qCorrect
将为2,但您需要检查
qCorrect==1
。等等


当您在按钮4\u单击和按钮6\u单击轻松模式中设置断点时,您将明白我的意思!希望这能进一步帮助你

事件处理程序中的“下一步”按钮是什么?是否将按钮分配为新按钮?@bash.d更新了问题。是否重置
qCorrect
?在
PickQuestion
中发生了什么?你第一次为按钮分配事件处理程序时一定有些奇怪…@bash.d我可以把程序上传到某个地方让你看看吗?程序相当大,我无法确定问题出在哪里。我们可以试一试。。。也许我会找到一些东西你说的断点是什么意思?我以前从未使用/见过断点。嗯。。。如果在VS2012 IDE中单击行号旁边,将显示一个红点,表示断点。如果您使用
F5
启动程序,您将在调试模式下启动程序,当执行到达断点时,程序将保持不变。嗯,因此我必须让它检查qCorrect,但不总是qCorrect=1,因为它不总是1I,我还没有弄明白,这是相当不稳定的,如果点击正确答案,它会变为绿色,而其他三个会变为红色,但我不知道怎么做,所以如果用户点击的答案是错误的,三个错误的答案会变为红色,并以绿色突出显示正确的答案(用户单击的按钮周围会有一个明亮的边框,通知用户这是所选的答案)。有什么帮助吗?
private void btnNext_Click(object sender, EventArgs e)
    {
        // swap panels
        dPanel.Visible = false;
        qPanel.Visible = true;

        button4.BackColor = SystemColors.Control;
        button5.BackColor = SystemColors.Control;
        button6.BackColor = SystemColors.Control;
        button7.BackColor = SystemColors.Control;

        button4.Font = new Font(button4.Font.Name, button4.Font.Size, FontStyle.Regular);
        button5.Font = new Font(button5.Font.Name, button5.Font.Size, FontStyle.Regular);
        button6.Font = new Font(button6.Font.Name, button6.Font.Size, FontStyle.Regular);
        button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Regular);

        if ( qCounter != qSection )
        {
            PickQuestion();
            label5.Text = "Question " + qCounter.ToString() + " of " + qSection.ToString();

            button4.Enabled = true;
            button5.Enabled = true;
            button6.Enabled = true;
            button7.Enabled = true;
        }
        else
        {
            btnNext.Enabled = false;
            label5.Text = "You answered " + qCorrect.ToString() + " questions correctly out of a possible " + qSection.ToString();
        }
    }