我正在将C#用于Winforms应用程序,但似乎无法更改3组单选按钮上的默认/“未选中”颜色。我知道有一种方法不必单独按每个按钮。在该部分foreach
清除选中状态优良工程。这是我尝试过的。
public void ClearForm()
{
foreach (RadioButton radio1 in carbonationGroupBox.Controls.OfType<RadioButton>().ToList())
if (radio1.Checked == true)
{
radio1.ForeColor = Color.Black;
radio1.Checked = false;
}
foreach (RadioButton radio2 in strengthGroupBox.Controls.OfType<RadioButton>().ToList())
if (radio2.Checked == true)
{
radio2.ForeColor = Color.Black;
radio2.Checked = false;
}
foreach (RadioButton radio3 in sweetnessGroupBox.Controls.OfType<RadioButton>().ToList())
if (radio3.Checked == true)
{
radio3.ForeColor = Color.Black;
radio3.Checked = false;
}
这是一个其中一个更改颜色的分组框中的三个单选按钮的代码。
private void topStrengthHydromel_CheckedChanged(object sender, EventArgs e)
{
topStrengthStandard.ForeColor = Color.Black;
topStrengthSack.ForeColor = Color.Black;
topStrengthHydromel.ForeColor = Color.Lime;
strengthRadionButton = "Hydromel";
}
private void topStrengthStandard_CheckedChanged(object sender, EventArgs e)
{
topStrengthHydromel.ForeColor = Color.Black;
topStrengthSack.ForeColor = Color.Black;
topStrengthStandard.ForeColor = Color.Lime;
strengthRadionButton = "Standard";
}
private void topStrengthSack_CheckedChanged(object sender, EventArgs e)
{
topStrengthHydromel.ForeColor = Color.Black;
topStrengthStandard.ForeColor = Color.Black;
topStrengthSack.ForeColor = Color.Lime;
strengthRadionButton = "Sack";
}
我发现的问题是foreach
该区域内的事件顺序。
这个命令:
if (radio1.Checked == true)
{
radio1.ForeColor = Color.Black;
radio1.Checked = false;
}
触发了_CheckChanged事件并将颜色重新设置为Lime。
private void topStrengthHydromel_CheckedChanged(object sender, EventArgs e)
{
topStrengthStandard.ForeColor = Color.Black;
topStrengthSack.ForeColor = Color.Black;
topStrengthHydromel.ForeColor = Color.Lime;
strengthRadioButton = "Hydromel";
}
切换顺序,以便在radio1.Checked = false
发生错误之前radio1.ForeColor = Color.Black;
就发生了!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句