【问题标题】:radiobutton checked validation单选按钮检查验证
【发布时间】:2011-10-20 02:14:55
【问题描述】:

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

这是我目前的代码 -

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

【问题讨论】:

  • 我认为这个问题需要澄清一点。 2 个复选框与单选按钮有什么关系?每个面板是否有多组单选按钮?除了选中一个单选按钮之外,还有哪些可能性?
  • 请尝试澄清您的问题。这很混乱。
  • 抱歉错字我的意思是单选按钮而不是复选框

标签: c# winforms foreach radio-button


【解决方案1】:
if (!radM.Checked && !radF.Checked)
{
    lblAnswer.Text = "Please Select male or female";
    txtHT.Text = null;
}

【讨论】:

    【解决方案2】:

    您的代码将不起作用,因为 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】:

      默认情况下,每个面板将只包含一个单选,选中单选按钮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
                      }
                  }
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        如果您只对一个特定的单选按钮感兴趣,那么保持对它的全局引用会更容易。这样您就可以在任何时候直接检查按钮,而不是通过多个循环。

        【讨论】:

          猜你喜欢
          • 2019-10-17
          • 2012-12-28
          • 2011-04-16
          • 2016-02-15
          • 2011-11-26
          • 2011-09-27
          • 1970-01-01
          • 1970-01-01
          • 2015-09-01
          相关资源
          最近更新 更多