1)チェックボックスの使い方を知る
チェックボックス 「
」は、同時に複数の選択が可能なコントロールである。
フォームに以下のようにコントロールを配置しなさい。(プロジェクト名:CheckBox1)
オブジェクト名:①CheckBox1
②CheckBox2
③CheckBox3
④CheckBox4 ⑤CheckBox5 ⑥Button1
①
プログラムでチェックボックスの初期値を設定する。
フォームをダブルクリックしてForm_Loadメソッドに以下のプログラムを書いて実行してみる。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckBox1.CheckState = CheckState.Indeterminate
CheckBox2.CheckState = CheckState.Indeterminate
CheckBox3.CheckState = CheckState.Checked
CheckBox4.CheckState = CheckState.Unchecked
CheckBox5.CheckState = CheckState.Indeterminate
End Sub
チェックボックスオブジェクト.CheckStateプロパティは、チェックボックスの初期値を決定するプロパティで、
値は以下のものがある。
CheckState.Indeterminate・・・チェック済みでハイライト状態にする。
CheckState.Unchecked・・・チェックされていない状態。(デフォルト値)
CheckState.Checked・・・チェック済みにする。
②チェックボックスのチェック状態を取得する。
アンケート結果ボタン(Button1)をダブルリックしてButton_Clickメソッドに以下のプログラムを書いて実行してみる。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If CheckBox1.CheckState = CheckState.Indeterminate Then Debug.WriteLine("チェックに影が付いています。")
If CheckBox2.CheckState = CheckState.Indeterminate Then Debug.WriteLine("チェックに影が付いています。")
If CheckBox3.CheckState = CheckState.Checked Then Debug.WriteLine("チェックされています。")
If CheckBox4.CheckState = CheckState.Unchecked Then Debug.WriteLine("チェックされていません。")
If CheckBox5.CheckState = CheckState.Indeterminate Then Debug.WriteLine("チェックに影が付いています。")
End Sub
Debug.WriteLine()は、デバックラインの出力に書き出すデバッグ用のメソッドです。
通常のプログラミングでは使いません。
③チェックされている項目のテキストを取得する。
アンケート結果ボタン(Button1)をダブルリックしてButton_Clickメソッドに以下のプログラム変更して実行してみる。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If CheckBox1.CheckState = CheckState.Checked Then Debug.WriteLine(CheckBox1.Text)
If CheckBox2.CheckState = CheckState.Checked Then Debug.WriteLine(CheckBox2.Text)
If CheckBox3.CheckState = CheckState.Checked Then Debug.WriteLine(CheckBox3.Text)
If CheckBox4.CheckState = CheckState.Checked Then Debug.WriteLine(CheckBox4.Text)
If CheckBox5.CheckState = CheckState.Checked Then Debug.WriteLine(CheckBox5.Text)
End Sub
以下のプログラムでもチェック状態を調べることができます。
プログラムを変更してみましょう。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If CheckBox1.Checked = True Then Debug.WriteLine(CheckBox1.Text)
If CheckBox2.Checked = True Then Debug.WriteLine(CheckBox2.Text)
If CheckBox3.Checked = True Then Debug.WriteLine(CheckBox3.Text)
If CheckBox4.Checked = True Then Debug.WriteLine(CheckBox4.Text)
If CheckBox5.Checked = True Then Debug.WriteLine(CheckBox5.Text)
End Sub
チェックボックスオブジェクト.Checkedプロパティは、チェックボックスがチェックされていれば「True」、
チェックされていなければ、「False」になる。ただし、CheckState.Indeterminateが
チェックボックスオブジェクト.CheckState設定されているとチェック済みになる。
③フォームのプログラムを消して実際に選択項目だけが出力されるか試してみる。
フォームをダブルクリックしてForm_Loadメソッドに以下のプログラムを削除して実行してみる。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckBox1.CheckState = CheckState.Indeterminate
CheckBox2.CheckState = CheckState.Indeterminate
CheckBox3.CheckState = CheckState.Checked
CheckBox4.CheckState = CheckState.Unchecked
CheckBox5.CheckState = CheckState.Indeterminate
End Sub
④チェックボックスを連動して切り替える。
フォームに以下のようにコントロールを配置しなさい。(プロジェクト名:CheckBox2)
オブジェクト名:①CheckBox1 ②CheckBox2 ③CheckBox3
④CheckBox4 ⑤CheckBox5 ⑥CheckBox6
フォームをダブルクリックして、Form_Loadメソッドに以下のプログラムを入力する。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckBox2.Enabled = False
CheckBox3.Enabled = False
End Sub
チェックボックスオブジェクト.Enabledプロパティは、チェックボックスを有効にするか無効にするかの設定である。
Trueを代入すると有効になる。(デフォルト値)
Falseを代入すると無効になる。
フォーム上のCheckBox1オブジェクトをダブルクリックしてCheckBox1_CheckedChangedメソッドに
以下のプログラムを入力して、実行しなさい。
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
CheckBox2.Enabled = CheckBox1.Checked
CheckBox3.Enabled = CheckBox1.Checked
End Sub
チェックボックスオブジェクト.Checkedプロパティは、チェックボックスがチェックされていれば、「True」に、
チェックされていなければ、「False」になります。
この場合、CheckBox1がチェックされたらCheckBox1.Checkedが「True」になって、その値が、
CheckBox2.Enabled 、CheckBox3.Enabledに代入されるため、CheckBox2、CheckBox3のオブジェクトが、
使えるようになります。
Checkbox4~CheckBox6もCheckBox1~CheckBox3までと同じになるようにしなさい。
⑤以下のフォームを作成して、アンケート結果ボタン(Button1)をクリックすると以下のように、Label2に、
表示するようにしなさい。(プロジェクト名:CheckBox3)
<表示例>VB.NETは、難しいが、楽しい。
オブジェクト名:①Label1 ②CheckBox1 ③CheckBox2 ④CheckBox3
⑤CheckBox4 ⑥CheckBox5 ⑦CheckBox6
⑧Label2 ⑨Button1
<答えなのだー(~~);> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, b As String If CheckBox1.Checked = False And CheckBox2.Checked = False And CheckBox3.Checked = False And CheckBox4.Checked = False And CheckBox5.Checked = False And CheckBox6.Checked = False Then Label2.Text = "1行目、2行目は、それぞれ必ずひとつは選択してください。" ElseIf CheckBox1.Checked = False And CheckBox2.Checked = False And CheckBox3.Checked = False Then Label2.Text = "1行目は、必ずひとつは選択してください。" ElseIf CheckBox4.Checked = False And CheckBox5.Checked = False And CheckBox6.Checked = False Then Label2.Text = "2行目は、必ずひとつは選択してください。" Else If CheckBox1.Checked = True Then a = CheckBox1.Text If CheckBox2.Checked = True Then a = CheckBox2.Text If CheckBox3.Checked = True Then a = CheckBox3.Text If CheckBox4.Checked = True Then b = CheckBox4.Text If CheckBox5.Checked = True Then b = CheckBox5.Text If CheckBox6.Checked = True Then b = CheckBox6.Text Label2.Text = Label1.Text & a & "だが" & b & "です。" End If End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = False Then CheckBox2.Enabled = True CheckBox3.Enabled = True Else CheckBox2.Enabled = False CheckBox3.Enabled = False End If End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = False Then CheckBox1.Enabled = True CheckBox3.Enabled = True Else CheckBox1.Enabled = False CheckBox3.Enabled = False End If End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = False Then CheckBox1.Enabled = True CheckBox2.Enabled = True Else CheckBox1.Enabled = False CheckBox2.Enabled = False End If End Sub Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged If CheckBox4.Checked = False Then CheckBox5.Enabled = True CheckBox6.Enabled = True Else CheckBox5.Enabled = False CheckBox6.Enabled = False End If End Sub Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged If CheckBox5.Checked = False Then CheckBox4.Enabled = True CheckBox6.Enabled = True Else CheckBox4.Enabled = False CheckBox6.Enabled = False End If End Sub Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged If CheckBox6.Checked = False Then CheckBox4.Enabled = True CheckBox5.Enabled = True Else CheckBox4.Enabled = False CheckBox5.Enabled = False End If End Sub