radiobutton检查验证

时间:2011-08-04 14:53:10

标签: c# winforms foreach radio-button

我有多个面板,每个面板上有2个RadioButtons。我需要一种方法来检查每个面板中是否未选择单选按钮。如果面板在循环期间包含2个radiobutton,如果未选择这2个radiobutton,则变量(submit)将被设置为false。

到目前为止,这是我的代码 -

        foreach(Panel panels in groupBox2.Controls)
        {
            foreach (RadioButton radio in panels.Controls)
            {
                if (!radio.Checked)
                {
                    submit = false;
                }
            }
        }

4 个答案:

答案 0 :(得分:2)

默认情况下,每个面板只包含一个收音机,选中单选按钮AutoCheck为真,无论如何都是您的问题:

foreach(Control parent in groupBox2.Controls)
{
    Panel panel = parent as Panel;
    if (panel != null)
    {
        foreach (Control child in panel.Controls)
        {
            RadioBox radio = child as RadioBox;
            if (radio != null)
            {
                if (!radio.Checked)
                {
                    MessageBox.Show(radio.ToString());
                    break;//if AutoCheck of all radio buttons seted to true
                }
            }
        }
    }
}

答案 1 :(得分:1)

如果您只对一个特定的无线电按钮感兴趣,那么保持对它的全局引用会更容易。这样你就可以随时直接检查按钮,而不是经历多个循环。

答案 2 :(得分:1)

您的代码无效,因为Container.Controls集合包含“控件”引用,因此您需要检查每个控件以查看它是否是您要查找的类型。

foreach(var control1 in groupBox2.Controls)         
{             
    if (control is Panel)
    {
        foreach (var control2 in control1.Controls)             
        {
            if (control2 is RadioButton)
            {
                if (!(control2 as RadioButton).Checked)                
                {                     
                     MessageBox.Show(control2.Text);
                }
            }
        }
    }
}            

这将使您当前的代码正常工作。但我不太清楚你在问什么。每个容器中只能选择一个单选按钮。

答案 3 :(得分:1)

if (!radM.Checked && !radF.Checked)
{
    lblAnswer.Text = "Please Select male or female";
    txtHT.Text = null;
}