我做了一个问答游戏,我希望按钮上的文本在单击时变为粗体。此代码有效:
button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Bold);
我遇到的问题是,当我单击“下一步”按钮转到下一个问题时,即使没有单击答案,文本仍然是粗体。我该如何解决这个问题?
只需在“下一步”按钮上执行此操作单击
button7.Font = new Font(button7.Font.Name, button7.Font.Size, FontStyle.Regular);
单击下一步时,您需要取消所有内容的粗体。下面的代码应该会有所帮助(它还包括一个可能更清晰的粗体实现)。
// 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) { ... }