单选按钮-检查是否选中-为什么前两个方法失败
本文关键字:方法 失败 两个 是否 检查 为什么 单选按钮 | 更新日期: 2023-09-27 17:50:59
我想知道为什么下面没有像预期的那样工作…如果If语句更改为(!ctrl.checked),则返回所有单选按钮的名称)
myForm f = new myForm();
foreach (RadioButton ctrl in f.Controls.OfType<RadioButton>())
{
if (ctrl.Checked)
MessageBox.Show(ctrl.Name);
}
我也试过
foreach (Control c in f.controls)
if (c is radiobutton)
{
if (c.Checked)
{
messagebox.show(c.name);
}
,然后我把所有的单选按钮放在一个组框中,并使用下面的代码:
foreach (RadioButton c in groupBox1.Controls)
{
if (c.Checked)
{
MessageBox.Show(c.Name);
}
}
it work fine.
这里有什么不同?
感谢您的帮助
我猜您的单选按钮是窗体以外的控件的子控件。您需要递归地搜索单选按钮。
public void DisplayRadioButtons()
{
Form f = new Form();
RecursivelyFindRadioButtons(f);
}
private static void RecursivelyFindRadioButtons(Control control)
{
foreach (Control childControl in control.Controls)
{
RecursivelyFindRadioButtons(childControl);
if (childControl is RadioButton && ((RadioButton) childControl).Checked)
{
MessageBox.Show(childControl.Name);
}
}
}