如果选中Groupbox中的任何RadioButton,则获取

时间:2016-08-12 06:19:40

标签: c# winforms radio-button groupbox

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

groubBox.Enter似乎不是我要找的EventHandler。有没有办法按我的方式去做,或者我必须为每个radiobutton.CheckedChanged创建一个处理程序?

修改

该应用程序的工作流程为:

选择了一个文件→GroupBox已启用→Panel / ComboBoxTextBox启用,具体取决于所选的RadioButton

2 个答案:

答案 0 :(得分:1)

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 
}

答案 1 :(得分:0)

创建CheckedChanged事件处理程序,一个用于所有radiobuttons
设置RadioButton.Tag以引用其GroupBox受访者

例如在构造函数

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将启用其中的所有子控件