C# 在Winforms中更改清除窗体上单选按钮的文本颜色
我在Winforms应用程序中使用C#,我似乎无法在我的3组单选按钮上更改回默认/未选择的颜色。我知道有一种方法不必按每个按钮单独操作。C# 在Winforms中更改清除窗体上单选按钮的文本颜色,c#,winforms,visual-studio,radio-button,C#,Winforms,Visual Studio,Radio Button,我在Winforms应用程序中使用C#,我似乎无法在我的3组单选按钮上更改回默认/未选择的颜色。我知道有一种方法不必按每个按钮单独操作。foreach中用于清除选中状态的部分工作正常。这是我试过的 public void ClearForm() { foreach (RadioButton radio1 in carbonationGroupBox.Controls.OfType<RadioButton>().ToList())
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;
}
我发现的问题是
foreach
区域内的事件顺序
本命令:
if (radio1.Checked == true)
{
radio1.ForeColor = Color.Black;
radio1.Checked = false;
}
正在触发_CheckChanged事件并将颜色恢复为淡黄色
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之前代码>成功了 你到底想再做什么?你是如何改变它们的颜色的?这段代码有什么问题?再增加一个单选按钮如何?比如说,文本@Ian中没有任何内容。。。“无”不能有另一个单选按钮,因为必须从每个组中选择一个单选按钮。
private void topStrengthHydromel_CheckedChanged(object sender, EventArgs e)
{
topStrengthStandard.ForeColor = Color.Black;
topStrengthSack.ForeColor = Color.Black;
topStrengthHydromel.ForeColor = Color.Lime;
strengthRadioButton = "Hydromel";
}