2013-03-09 62 views
0

我做了一個問答遊戲,我希望點擊時按鈕上的文字爲粗體。此代碼的工作:按鈕文字加粗點擊

button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Bold); 

我遇到的問題是,當我點擊「下一步」按鈕,進入下一個問題,文本是即使答案還沒有被點擊還是大膽。我該如何解決這個問題?

+1

您是否可以在點擊「下一步」時設置按鈕的字體? – duDE 2013-03-09 19:08:51

+0

@duDE我從來沒有這樣想過。謝謝。不過,我還有一個稍微相關的問題。編輯我的問題 – user2141272 2013-03-09 19:19:02

+0

這是相同的邏輯 - 你用button7.Background = Color.Yellow改變背景;並將其設置回「Next」! BTW看看Austin Salonen的答案:他給了你一個完美的例子! – duDE 2013-03-09 19:27:42

回答

1

只是這樣做「下一步」按鈕,點擊

button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Regular); 
+0

我從來沒有這樣想過。謝謝。不過,我還有一個稍微相關的問題。編輯我的問題 – user2141272 2013-03-09 19:18:00

+0

您編輯的問題部分與您的主要問題不相似,應該作爲不同的問題發佈。你的主要問題是關於如何重新獲得按鈕字體,而較新的有一些很好的邏輯構建。如果你得到你主要問題的答案,你可以選擇其中一個答案,並可以提出另一個問題。 – 2013-03-09 19:44:12

+0

是的,抱歉,這樣做是有道理的。謝謝你的提示。 – user2141272 2013-03-09 19:56:13

1

當您單擊下一步,您需要取消大膽的一切。下面的代碼應該有幫助(它也包括一個可能更清晰的粗體實現)。

// usage 
foreach(var button in GetAnswerButtons()) 
{ 
    button.Click += OnClickToBold; 
    button.Click += OnClickSetPropertyBasedOnCorrectness; 
} 

nextButton.Click += NextClick; 


// implementations  

private void OnClickToBold(object sender, EventArgs e) 
{ 
    var button = sender as Button; 

    if (button == null) return; 

    button.Font = new Font(button.Font.Name, button.Font.Size, FontStyle.Bold); 
} 

private void OnClickSetPropertyBasedOnCorrectness(object sender, EventArgs e) 
{ 
    var button = sender as Button; 

    if (button == null) return; 

    button.WhateverProperty = IsCorrectAnswer(button) 
     ? valueWhenCorrect 
     : valueWhenWrong; 
} 

private void NextClick(object sender, EventArgs e) 
{ 
    foreach(var button in GetAnswerButtons()) 
    { 
     button.Font = new Font(button.Font.Name, button.Font.Size, FontStyle.Regular); 
     UnsetPropertyBasedOnCorrectness(button); 
    } 
} 

private IEnumerable<Button> GetAnswerButtons() { ... } 
private void UnsetPropertyBasedOnCorrectness(Button b) { ... }