2013-03-09 95 views
0

我很难搞清楚什么。根据正确/不正确的答案改变按钮的颜色

我想根据点击的按钮是正确的答案还是错误的答案来改变按钮的背景颜色,即如果点击的按钮是正确的答案,背景颜色会变成黄绿色,如果它是错误的答案,所有错误答案的背景颜色变为红色,正确答案具有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_Click我:

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

下一步按钮的事件处理程序是什么?你是否分配了新的按钮? – 2013-03-09 20:07:36

+0

@ bash.d更新了问题。 – user2141272 2013-03-09 20:15:32

+0

您是否重置了“qCorrect”? 'PickQuestion'中会发生什么?在按钮的事件处理程序的第一个赋值中必定有些奇怪... – 2013-03-09 20:21:29

回答

0

好吧,我明白了!在您的答案按钮的事件处理程序中,您始终正在增加qCorrect,但您只检查qCorrect == 1。如果您点击第一个答案,qCorrect将为1,当您第二次回答时,qCorrect将为2,但您检查qCorrect == 1。等等......

当您在button4_click和button6_click中设置易断模式的断点时,您会明白我的意思!希望这可以帮助你进一步。

+0

你是什么意思的断点?我以前从未使用/看过断点。 – user2141272 2013-03-09 20:49:28

+0

呃......如果你点击VS2012 IDE中的行号旁边出现一个红点,表示一个断点。如果你使用'F5'开始你的程序,你可以在调试模式下启动它,当执行到达断点时,程序将会保持。 – 2013-03-09 20:52:25

+0

嗯,所以我必须使它检查qCorrect,但并不总是qCorrect = 1,因为它不会总是1 – user2141272 2013-03-09 20:57:46