2017-03-06 71 views
0

我试图内Groupbox禁用所有控件,如下图所示,但我得到的错误在铸造任何建议,所有的控制?禁用内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; 
       } 
      } 
+1

change || –

+1

如果您想禁用'GroupBox'中的所有控件,那么您可以禁用'GroupBox'并禁用里面的所有控件。 –

+0

@RomaDoskoch感谢 – sam

回答

3

为什么不干脆禁用分组框本身?

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... 
} 

的问题目前你投contTextBoxif语句中造成的,因为和他们片刻之后,将其转换为ComboBox 。那么它只能在另一边,所以演员总是在某个时候失败。

随着语句分开,你知道的类型,因为它是由if过滤。

+0

@I不知道,禁用'GroupBox'将禁用它里面的所有控件..我试过,但界面看起来不是很好,因为还授予,将禁用过,整个界面会出现,因为它是无效的?谢谢 – sam

+0

@sam OK然后使用每种类型的if/else。 – Equalsk

+1

@sam当你禁用文本框,组合框和复选框时,那么你的界面应该看起来不活跃,以便用户清楚。 +1为禁用整个组 –