|
分類:[VB.NET/VB2005 以降]
vb.netにてチェックボックスが2つ(CheckBox1、CheckBox2)あり、 その中チェックボックスの一つしか選択出来ないようにしたいと思っています。
ラジオボタンであればと思うかもしれませんが、チェックボックスである理由は、 ユーザーが選択(チェック)した後、無選択に戻せないからです。 (チェックボックスであれば無選択に戻せる為)
そして以下のロジックを各チェックボックスごとに作成しました。 Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Me.CheckBox2.Checked = False End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged Me.CheckBox1.Checked = False End Sub
このように作成したのですが、いざ動かしてみると、 CheckBox1をクリックしチェックを入れた後、CheckBox2をクリックすると、 CheckBox1のチェックは外れましたが、CheckBox2にチェックが入りませんでした。
CheckBox1のチェックが外れている場合は、CheckBox2をクリックしチェックを入れることが出来ましたが、 CheckBox2にチェックを入れるのにCheckBox2を2回クリックしないと出来ないため、スムーズなやり方はありますでしょうか。
ちなみに、おかしいかもしれませんが、 Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Me.CheckBox2.Checked = False If CheckBox1Checked = False Then CheckBox1Checked = True Else CheckBox1Checked = False EndIf End Sub を作りましたところ、 「System.StackOverflowException' のハンドルされていない例外が発生」とあり 怒られました・・・。
以上、よろしくお願いします。
|