-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 回答