-1

クイズゲームを作ったのですが、クリックしたときにボタンのテキストを太字にしたいです。このコードは機能します:

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

私が抱えている問題は、[次へ] ボタンをクリックして次の質問に移動すると、回答がクリックされていないにもかかわらず、テキストがまだ太字になっていることです。これを解決するにはどうすればよいですか?

4

2 に答える 2

2

「次へ」ボタンをクリックしてこれを行うだけです

button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Regular);
于 2013-03-09T19:11:48.957 に答える
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) { ... }
于 2013-03-09T19:19:15.403 に答える