どうも!リョクちゃです。
今回はチェックボックスと呼ばれるコントロールについて、触れていきます。
チェックボックスは、名前の通り、ボックスにチェックを付けたり消したりするボックスで
主にアプリケーションでは、アンケートの回答やアプリケーションの設定を画面上で
行わせるときに使われたりします。
実際に例を交えて今回は簡単に使い方を紹介していきます。
ちなみに前回はこちら
目次
準備編:チェックボックスの配置
まず最初に下のようなフォーム画面を作成します。
りんご、ばななやぶどうと書かれた隣のボックスがチェックボックスになります。
チェックボックスの配置の仕方は、ツールボックスを開き、CheckBoxと書かれたモノを
ドラッグ&ドロップでフォーム画面に移すことで配置ができます。(下図ご参考)
ちなみに筆者の環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.2
です。
今回は、ボタンが押されたらチェックボックスでチェックされている項目の名前を
メッセージボックスで表示するアプリケーションを作りながら使い方を紹介します。
機能としては、
- チェックボックスへのチェックは1つだけ(複数はチェックできないモノとする。)
- ボタンが押されたらチェックされているボックスの名前を表示する。
チェックボックスのチェックを1つだけにする
このままだと複数のチェックボックスにチェックができてしまうので、
チェックを1つのボックスにのみ行える方法をコードとして書いていきます。
チェックボックスのチェックイベント
まず、チェックボックスがチェックされたときのイベントをコード化していきます。
コード化するにはフォーム上のチェックボックスをダブルクリックします。
すると、下のようなコードが追加されます。
1 2 3 4 5 |
Public Class checkTestBox Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged End Sub End Class |
というイベントがチェックされたときに発生するイベントになります。
同様に他のチェックボックスも追加していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Public Class checkTestBox ''' <summary> ''' りんごのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged End Sub ''' <summary> ''' ばななのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged End Sub ''' <summary> ''' ぶどうのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged End Sub End Class |
それでは、チェックボックスに複数チェックをできないようにしていきます。
コードは下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Public Class checkTestBox ''' <summary> ''' りんごのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox2.CheckState = CheckState.Checked OrElse Me.CheckBox3.CheckState = CheckState.Checked Then Me.CheckBox1.Checked = False End If End Sub ''' <summary> ''' ばななのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox1.CheckState = CheckState.Checked OrElse Me.CheckBox3.CheckState = CheckState.Checked Then Me.CheckBox2.Checked = False End If End Sub ''' <summary> ''' ぶどうのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox1.CheckState = CheckState.Checked OrElse Me.CheckBox2.CheckState = CheckState.Checked Then Me.CheckBox3.Checked = False End If End Sub End Class |
ここで、
で現在のチェックボックスの状態を取得することができます。
状態としては、
- Unchecked
チェックされていない - Checked
チェックされている - Indeterminate
不確定状態☒←こんな状態
の3つがあります。
他のチェックボックスがチェックされていたら自身のはチェックをしないように、
条件分岐のif文を使って、自身のチェック状態をFalseにしています。
一瞬チェックはされますが、見た目上はチェックがされていないように振舞われます。
ちなみに
でチェックボックスの状態を変更させることができます。
これを
にすることで既にチェックがされていたらチェックができないようにしています。
ボタンを押したらチェックされている名前を表示する
ボタンを押したらチェックされているボックスの名前をメッセージボックスで表示する
コードを書いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
Public Class checkTestBox ''' <summary> ''' りんごのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox2.CheckState = CheckState.Checked OrElse Me.CheckBox3.CheckState = CheckState.Checked Then Me.CheckBox1.Checked = False End If End Sub ''' <summary> ''' ばななのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox1.CheckState = CheckState.Checked OrElse Me.CheckBox3.CheckState = CheckState.Checked Then Me.CheckBox2.Checked = False End If End Sub ''' <summary> ''' ぶどうのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox1.CheckState = CheckState.Checked OrElse Me.CheckBox2.CheckState = CheckState.Checked Then Me.CheckBox3.Checked = False End If End Sub ''' <summary> ''' ボタンが押されたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' チェックボックスの名前を格納する変数 Dim msg As String = "" '各 チェックボックスにチェックがされている項目を調べる If Me.CheckBox1.CheckState = CheckState.Checked Then msg = Me.CheckBox1.Text End If If Me.CheckBox2.CheckState = CheckState.Checked Then msg = Me.CheckBox2.Text End If If Me.CheckBox3.CheckState = CheckState.Checked Then msg = Me.CheckBox3.Text End If ' メッセージボックスに表示 MessageBox.Show(msg) End Sub End Class |
これでチェックされているボックスの名前をメッセージボックスで表示させることが
できるようになりました。
ただ、これだとチェックがされていない時にボタンを押してしまうと
メッセージボックスも表示されてしまうのでチェックされていない時は、
メッセージボックスも表示されないようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
Public Class checkTestBox ''' <summary> ''' りんごのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox2.CheckState = CheckState.Checked OrElse Me.CheckBox3.CheckState = CheckState.Checked Then Me.CheckBox1.Checked = False End If End Sub ''' <summary> ''' ばななのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox1.CheckState = CheckState.Checked OrElse Me.CheckBox3.CheckState = CheckState.Checked Then Me.CheckBox2.Checked = False End If End Sub ''' <summary> ''' ぶどうのチェックボックスがチェックされたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged ' 他の項目がチェックされていたらチェックをしない If Me.CheckBox1.CheckState = CheckState.Checked OrElse Me.CheckBox2.CheckState = CheckState.Checked Then Me.CheckBox3.Checked = False End If End Sub ''' <summary> ''' ボタンが押されたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' チェックボックスの名前を格納する変数 Dim msg As String = "" '各 チェックボックスにチェックがされている項目を調べる If Me.CheckBox1.CheckState = CheckState.Checked Then msg = Me.CheckBox1.Text End If If Me.CheckBox2.CheckState = CheckState.Checked Then msg = Me.CheckBox2.Text End If If Me.CheckBox3.CheckState = CheckState.Checked Then msg = Me.CheckBox3.Text End If ' チェックされていない時は表示しないように If msg <> "" Then ' メッセージボックスに表示 MessageBox.Show(msg) End If End Sub End Class |
これを実行すると、
このような状態になれば成功です。
まとめ
チェックボックスの状態を取得するには
チェックボックスの状態を変更するには
チェックボックスがチェックされたときのイベントは
ご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。