选择不同tabcontrol上的radiobuttons

时间:2016-12-13 10:52:26

标签: c# winforms radio-button tabcontrol

请阅读de question,因为它不重复。 我有一个winforms应用程序我C#witch有一个tabcontrol有3个选项卡。 每个标签有4个radiobuttons。 如果我运行应用程序,单选按钮在同一选项卡中正常工作,但当我选择另一个选项卡时,选择仍保留在第一个选项卡中。 我在更换标签时尝试清除所有已检查的单选按钮但由于某种原因它无法正常工作。 代码使用的是:

private void UncheckLayouts(TabPage activePage)
{
    foreach (Control control in tabControl1.Controls)
    {
        if (control is RadioButton)
        {
            RadioButton rb = control as RadioButton;
            rb.Checked = false;
        }
    }
}

private void radioButton1_Click(object sender, EventArgs e)
{
    UncheckLayouts(tabControl1.SelectedTab);
}

private void radioButton2_Click(object sender, EventArgs e)
{
    UncheckLayouts(tabControl1.SelectedTab);
}
...

我也是这样尝试的:

private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e) {
    foreach (var ctrl in e.TabPage.Controls) {
         if (ctrl is RadioButton) {
             RadioButton tb = ctrl as RadioButton;
             rb.Checked = false;
         }
    }
}

编辑: 新代码。

public Form2()
{
    InitializeComponent();
    tabControl1.Selected += TabControl1_Selected;
}
private void TabControl1_Selected(object sender, TabControlCancelEventArgs e)
{
    foreach (var ctrl in e.TabPage.Controls)
    {
        if (ctrl is RadioButton)
        {
            RadioButton tb = ctrl as RadioButton;
            tb.Checked = false;
        }
    }
}

但没有解决方案可行。 所有单选按钮都与设计师一起添加到每个标签中。

任何人都可以帮忙。 提前谢谢,

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码,我测试它工作正常

private void InitializeComponent(){
           ........
 tabControl1.Selected += TabControl1_Selected;
}



private void TabControl1_Selected(object sender, TabControlEventArgs e)
{
    foreach (var ctrl in e.TabPage.Controls)
    {
        if (ctrl is RadioButton)
        {
            RadioButton tb = ctrl as RadioButton;
            tb.Checked = false;
        }
    }
}