禁用Groupbox中的所有控件

时间:2017-03-06 09:30:42

标签: c# winforms

我正在尝试禁用Groupbox中的所有控件,如下所示,但是我在收到任何建议时收到错误?

  

无法将类型为system.windows.forms.checkbox的对象强制转换为类型   system.windows.forms.textbox

            foreach (Control cont in GB_Product_Entry.Controls)
            {
                if (cont is TextBox || cont is ComboBox)
                {
                    ((TextBox)cont).ReadOnly = true;
                    ((TextBox)cont).BackColor = SystemColors.Control;

                    ((ComboBox)cont).Enabled = false;
                    ((ComboBox)cont).BackColor = SystemColors.Control;

                    ((CheckBox)cont).Enabled = false;
                    //((CheckBox)cont).BackColor = SystemColors.Control;
                }
            } 

2 个答案:

答案 0 :(得分:6)

为什么不禁用GroupBox本身?

GB_Product_Entry.Enabled = false;

如果你真的必须遍历它们,那么将if条件分开:

foreach (Control cont in GB_Product_Entry.Controls)
{
    if (cont is TextBox)
    {
        ((TextBox)cont).ReadOnly = true;
        ((TextBox)cont).BackColor = SystemColors.Control;
    }
    else if (cont is ComboBox)
    {
        ((ComboBox)cont).Enabled = false;
        ((ComboBox)cont).BackColor = SystemColors.Control;
    }
    else if (cont is CheckBox)
    {
        ((CheckBox)cont).Enabled = false;
      //((CheckBox)cont).BackColor = SystemColors.Control;
    }
    // Any other conditions here...
} 

目前问题是由于您在if语句中投放contTextBox并且稍后将其投放到ComboBox。好吧,它只能在另一个上,所以演员总是在某个时候失败。

如果语句分开,您就会知道if过滤的类型。

答案 1 :(得分:0)

GB_Product_Entry.Enabled = false; 它将禁用GB_Product_Entry GrpupBox中的所有内容