2017-03-06 44 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爲禁用整個組 –