2017-03-06 20 views
0

Groupbox内のすべてのコントロールを無効にしようとしていますが、エラーが表示されます。グループボックス内のすべてのコントロールを無効にする

理由だけでのGroupBox自体を無効にしないで 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

変更|| to else else –

+1

'GroupBox'のすべてのcontolsを無効にしたい場合、' GroupBox'を無効にすると、内部のすべてのコントロールが無効になります。 –

+0

@RomaDoskochありがとう – sam

答えて

3

を入力するタイプのsystem.windows.forms.checkboxのオブジェクトをキャストすることができませんか?

GB_Product_Entry.Enabled = false; 

あなたは本当にそれらをループは、if条件区切る必要がある場合:問題は現在ので、あなたがTextBoxcontをキャスト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... 
} 

をし、それらの瞬間は、後でComboBoxにキャスト。まあ、それはオンにすることも、他のものにすることもできるので、キャストは常にある時点で失敗します。

ステートメントを区切って、タイプがifでフィルタリングされていることを知っています。

+0

@I 'GroupBox'を無効にすると、その中のすべてのコントロールが無効になることは知られていませんでした...しかし、ラベルも無効になり、 thanks – sam

+0

@sam OK、各タイプにif/elseを使用します。 – Equalsk

+1

@samテキストボックス、コンボボックス、チェックボックスを無効にすると、ユーザーのインターフェースは非アクティブとして見えるべきです(SHOULD)。 +1グループ全体を無効にするために –

関連する問題