2017-01-13 4 views
0

チェックボックスについては少し問題があります。ボタンを押したときに選択されているボックスを非表示にしたい選択したチェックボックスをフォームに表示しない

私はそれが動作しますが、私は論理的なエラーを取得する

foreach (CheckBox button in Controls) 
     { 
      if (button.Checked == true) 
      { 
       button.Hide(); 
      } 
     } 

のようにコードの一部を書きました。どうすればこの問題を解決できますか?

+0

正確なエラーはありますか? – Steve

+0

foreach(コントロールのコントロールコントロール) { if(ctlはCheckBox)ctl.Visible =((チェックボックス)ctl).Checked; – TaW

答えて

3

問題はControlsコレクションの使用です。このコレクションには、フォームコンテナによってホストされるすべてのコントロールが含まれます。このコレクションのコントロールをCheckBoxに直接割り当てようとすると、キャストエラーが発生します。

フォームのすべてのコントロールがチェックボックスではないため、チェックボックスコントロールにのみロジックを適用する必要があります。

型チェックボックスの変数への直接assignementを許可するようにも利点がありOfType IEnumerable extension

foreach (CheckBox button in this.Controls.OfType<CheckBox>()) 
{ 
    if (button.Checked) 
     button.Hide(); 
} 

と簡単です。

+0

ありがとうございました。力はあなたと一緒にあるかもしれません。 –

関連する問題