我无法搞清楚事情。
我想根据点击的按钮是正确的答案还是错误的答案来改变按钮的背景颜色,即如果点击的按钮是正确的答案,背景颜色会变为YellowGreen,如果是错误的答案,所有错误答案的背景颜色变为红色,右侧答案的背景颜色为YellowGreen,以便用户能够看到问题是否正确或是否出错,以及答案是否正确之一。
就像第一个问题出现了,有四个按钮,我点击正确的答案,它变为绿色,错误的答案变为红色但是当我点击下一个然后转到下一个问题,它不再改变颜色。如果我点击其中一个不正确的答案,那么颜色也不会因为某些原因而改变,只有当我先点击正确答案时才会改变。
这四个按钮分别命名为button4,button5,button6和button7。我有一个示例代码(对所有四个按钮都有这个):
if (qCorrect == 1)
{
button4.BackColor = Color.YellowGreen;
button5.BackColor = Color.Red;
button6.BackColor = Color.Red;
button7.BackColor = Color.Red;
}
在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();
}
}
对此问题的任何帮助都将非常感激。
答案 0 :(得分:0)
好的,我明白了!在你的答案按钮的事件处理程序中,你总是递增qCorrect,但你只检查qCorrect == 1
。如果您点击了第一个答案,qCorrect
将为1,当您第二次回答时,qCorrect
将为2,但您检查qCorrect == 1
。等等...
当你在button4_click和button6_click中为easy-mode设置断点时,你会明白我的意思!希望这可以进一步帮助你。