我有多个面板,每个面板上有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;
}
}
}
答案 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;
}