| > そして以下のロジックを各チェックボックスごとに作成しました。 > 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にチェックが入りませんでした。
まぁ、当然でしょう。 CheckBox2にチェックを付けた時、イベントでCheckBox2_CheckedChangedが呼び出されますが、ここで
> Me.CheckBox1.Checked = False
が実行されるわけですが、この時にCheckBox1のチェック状態が変わります。 つまり、イベントでCheckBox1_CheckedChangedが呼び出されます。 ここでは、
> Me.CheckBox2.Checked = False
が実行されますので、CheckBox2のチェックは外されるわけです。
もし、自分がチェックされたら相手のチェックを外す、ということを行いたいのであれば、 こんな感じでどうでしょう(動作未確認)。
Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If Me.CheckBox1.Checked Then '念のため、CheckBox1にチェックを付けた時、この段階でCheckBox1.CheckedがTrueになっているかを確認してください。 Me.CheckBox2.Checked = False End If End Sub
|