2008年12月24日水曜日

.NET RadioButton CheckedChangedイベントを処理する

ラジオボタンやチェックボックスでCheckedChangedイベントを処理する場合、
Private Sub RadioButton_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged

If Me.RadioButton1.Checked Then
Console.WriteLine("ラジオボタン1がチェックOn時の処理です。")
ElseIf Me.RadioButton2.Checked Then
Console.WriteLine("ラジオボタン2がチェックOn時の処理です。")
End If

End Sub 

このようなコードだと
ラジオボタン2をチェックONすると
まずラジオボタン2がチェックOnになったのでCheckedChangedイベントが走り、「ラジオボタン2がチェックOn時の処理です。」が出力されます。
そしてラジオボタン1がチェックOffになったのでCheckedChangedイベントが走り、再度「ラジオボタン2がチェックOn時の処理です。」が出力されます。




以下のコードのようにすれば処理が2回実行されることはないですね。
Private Sub RadioButton_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged
If DirectCast(sender, RadioButton).Checked Then
If Me.RadioButton1.Checked Then
Console.WriteLine("ラジオボタン1がチェックOn時の処理です。")
ElseIf RadioButton2.Checked Then
Console.WriteLine("ラジオボタン2がチェックOn時の処理です。")
End If
End If
End Sub  

Private Sub RadioButton_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged

If Sender.Equals(Me.RadioButton1) AndAlso Me.RadioButton1.Checked Then
Console.WriteLine("ラジオボタン1がチェックOn時の処理です。")
ElseIf Sender.Equals(Me.RadioButton2) AndAlso RadioButton2.Checked Then
Console.WriteLine("ラジオボタン2がチェックOn時の処理です。")
End If

End Sub

0 件のコメント: