【问题标题】:Changing text color of radio buttons on clear form in Winforms在 Winforms 中更改清除表单上单选按钮的文本颜色
【发布时间】:2016-08-14 00:17:34
【问题描述】:

我正在将 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";
}

【问题讨论】:

  • 你到底想做什么?你如何改变他们的颜色开始?这段代码有什么问题?
  • 再来一个RadioButton怎么样?比如说,将“无”作为其文本
  • @Ian...“无”不能有另一个单选按钮,因为必须从每个组中选择一个单选按钮。

标签: c# winforms visual-studio radio-button


【解决方案1】:

我发现的问题在于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; 成功之前!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多