Hatena::ブログ(Diary)

ペンギンの備忘録 Twitter

2014-12-13

[]RadioButtonやCheckBoxのチェックをキャンセルする方法 00:48 RadioButtonやCheckBoxのチェックをキャンセルする方法を含むブックマーク RadioButtonやCheckBoxのチェックをキャンセルする方法のブックマークコメント

※フォームアプリケーションの場合。

CheckedChangedイベントハンドラでCheckedの値を戻す方法はすぐ思いつくけど、一度チェックされた後元に戻す過程が見えてちょっとかっこ悪い。CheckedChangingイベントがあってキャンセル出来ればいいのだけど、そういう仕組みもない。

AutoCheckプロパティをFalseにしておけば自動でチェック状態が変わらないようになるので、これを利用して手動でチェック状態を変えてやればOK。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RadioButton1.Checked = True
        RadioButton1.AutoCheck = False
        RadioButton2.AutoCheck = False
        RadioButton3.AutoCheck = False
    End Sub

    Private Sub RadioButtons_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton1.Click, RadioButton2.Click, RadioButton3.Click
        If DirectCast(sender, RadioButton).Checked = False AndAlso MessageBox.Show("RadioButton.Checked is chhanging...", "", MessageBoxButtons.OKCancel) = Windows.Forms.DialogResult.OK Then
            For Each ctrl As Control In DirectCast(sender, Control).Parent.Controls
                If TypeOf ctrl Is RadioButton Then
                    DirectCast(ctrl, RadioButton).Checked = (sender Is ctrl)
                End If
            Next
        End If
    End Sub

End Class
トラックバック - http://d.hatena.ne.jp/A-penguin/20141213/1418485732
リンク元