2013-03-09 29 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