- 締切済み
どれか1つでもチェックされていたら無効にする
VB2010 7 Pro SP1 8つのチェックボックスと4つのラジオボタンがあり、チェックボックスにどれか1つでも チェックが入っていたらラジオボタンを無効にし、チェックが全部外れたら ラジオボタンを有効にしたいです。 下記のようなifで出来るかと思ったのですが、フォーム、ラジオボタン、チェックボックス どれに記述しても動きません。 どこに記述すればいいでしょうか? If CheckBox1.Checked Or CheckBox2.Checked Or CheckBox3.Checked Or CheckBox4.Checked Or CheckBox5.Checked Or CheckBox6.Checked Or CheckBox7.Checked Or CheckBox8.Checked Then RadioButton4.Enabled = False RadioButton6.Enabled = False RadioButton7.Enabled = False RadioButton8.Enabled = False Else RadioButton4.Enabled = True RadioButton6.Enabled = True RadioButton7.Enabled = True RadioButton8.Enabled = True End If
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- NoMusicNoLife49
- ベストアンサー率63% (14/22)
- NoMusicNoLife49
- ベストアンサー率63% (14/22)
こんにちは。 イベントを使用すれば実現できます。↓ Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged, _ CheckBox5.CheckedChanged, CheckBox6.CheckedChanged, CheckBox2.CheckedChanged '変数宣言 Dim FrmCheckBox As CheckBox = Nothing Dim FrmRadioButton As RadioButton = Nothing Dim EnbFlg As Boolean = True Try 'チェックボックス検査ループ For Each FrmCntrl As Control In Me.Controls 'コントロールの種別がチェックボックスか検査 If TypeOf FrmCntrl Is CheckBox Then 'フォーム上のチェックボックスを取得 FrmCheckBox = DirectCast(FrmCntrl, CheckBox) If FrmCheckBox.Checked = True Then 'ラジオボタン表示フラグ更新 EnbFlg = False 'ループ脱出 Exit For End If End If Next 'ラジオボタン表示/非表示処理 For Each FrmCntrl2 As Control In Me.Controls 'コントロールの種別がラジオボタンか検査 If TypeOf FrmCntrl2 Is RadioButton Then 'フォーム上のラジオボタンを取得 FrmRadioButton = DirectCast(FrmCntrl2, RadioButton) 'ラジオボタン表示フラグ設定 FrmRadioButton.Enabled = EnbFlg End If Next Catch ex As Exception MsgBox(ex.Message & ex.StackTrace, MsgBoxStyle.Critical) End Try End Sub
補足
ありがとうございます。 これで動作しなかったので、ちょっと調べてみます。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
すべてのチェックボックスの更新イベント。 まあ、コントロールを配列にしたほうが楽な気もするけどね。
補足
エラーも出ずチェックしてもラジオボタンが無効になりません。 調べていますが、難しいですね。