クイズゲームを作ったのですが、クリックしたときにボタンのテキストを太字にしたいです。このコードは機能します:
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) { ... }