获取是否选中了组框中的任何单选按钮

本文关键字:任何 单选按钮 是否 获取 | 更新日期: 2023-09-27 18:02:00

我有一个Windows窗体应用程序,我有几个单选按钮存储在一个GroupBox。我需要根据所选的单选按钮启用不同的GroupBox

groubBox.Enter似乎不是我正在寻找的EventHandler。是否有办法做到这一点我的方式,或者我必须为每个radiobutton.CheckedChanged创建一个处理程序?

编辑

应用程序的工作流是:

一个文件被选中→GroupBox被启用→一个Panel/ComboBox, TextBox被启用取决于被选中的RadioButton

获取是否选中了组框中的任何单选按钮

gbRadioButtons作为GroupBox的名称,然后您可以遍历该特定GroupBox中的每个radioButton,并使用以下代码检查它是否被选中(包括您想要检查的代码):

bool isAnyRadioButtonChecked = false;
foreach (RadioButton rdo in gbRadioButtons.Controls.OfType<RadioButton>())
{
    if (rdo.Checked)
    {
        isAnyRadioButtonChecked=true;
        break;
    }
}
if (isAnyRadioButtonChecked)
{ 
  // Code here one button is checked
}
else
{
  // Print message no button is selected 
}

创建CheckedChanged事件处理程序,一个用于所有单选按钮
设置RadioButton.Tag

引用GroupBox it应答者

例如在构造函数

public YourForm()
{
    radioButton1.Tag = groupBox1;
    radioButton2.Tag = groupBox2;
    radioButton3.Tag = groupBox3;
    radioButton1.CheckedChanged += radioButtons_CheckedChanged;
    radioButton2.CheckedChanged += radioButtons_CheckedChanged;
    radioButton3.CheckedChanged += radioButtons_CheckedChanged;
}
void radioButtons_CheckedChanged(object sender, EventArgs e)
{
    RadioButton button = sender as RadioButton;
    if (button == null) return;
    GroupBox box = button.Tag as GroupBox
    if (box == null) return;
    box.Enabled = button.Checked;
}

启用GroupBox将启用其中的所有子控件