前回に引き続き、選択した項目により違うメッセージが表示されるプログラムを作成していきます。
選択した項目が何かを識別するために、前回intChkという変数を定義しました。
朝・昼・夜の各項目をクリックするごとに変数に値を入れていきましょう。
まず朝。コード上部にあるコントロール選択用コンボボックスにてoptMorningを選択します。続いてイベント選択にてClickを選択すると、
Private Sub optMorning_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optMorning.Click
End Sub
というコードが記述されるので、そこの中にintChkに1を代入する処理を記載します。
Private Sub optMorning_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optMorning.Click
intChk = 1
End Sub
同様に、昼と夜の処理も作成します。
Private Sub optNoon_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optNoon.Click
intChk = 2
End Sub
Private Sub optNight_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optNight.Click
intChk = 3
End Sub
今度は表示ボタン押下時にメッセージを表示します。ここで注意しなければならないのは、朝・昼・夜の選択によってメッセージが異なること。
intChk変数の値を確認してそれぞれメッセージを変更します。
このような処理は条件分岐となり、If文を使うことで解決することもできるのですが、今回は同じ変数の値によって処理が変わるパターンです。その場合はSelect文を使うことが可能です。
基本文法は、
Select Case ○
Case A
処理1
Case B
処理2
・
・
・
Case Else
処理3
End Select
変数○がAだったら処理1を実行し、Bだったら処理2を実行する。・・・それ以外は処理3を実行する。
というかたちになります。
ボタン押下イベントと組み合わせるとこんな感じです。
Private Sub cmdMes_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdMes.Click
Select Case intChk
Case 1
MessageBox.Show("おはよう")
Case 2
MessageBox.Show("こんにちは")
Case 3
MessageBox.Show("こんばんは")
End Select
End Sub
参考までにIf文で記載した場合は以下の通りです。
Private Sub cmdMes_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdMes.Click
If intChk = 1 Then
MessageBox.Show("おはよう")
End If
If intChk = 2 Then
MessageBox.Show("こんにちは")
End If
If intChk = 3 Then
MessageBox.Show("こんばんは")
End If
End Sub
Select文を使った方が少しだけすっきりしているかも。
前回のコードと合わせると以下のようなコードになります。
Public Class Form1
'朝・昼・晩のどれが選択されているかを番号で表す 朝-1、昼-2、夜-3
Dim intChk As Integer = 1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
optMorning.Checked = True
End Sub
Private Sub optMorning_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optMorning.Click
intChk = 1
End Sub
Private Sub optNoon_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optNoon.Click
intChk = 2
End Sub
Private Sub optNight_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optNight.Click
intChk = 3
End Sub
Private Sub cmdMes_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdMes.Click
Select Case intChk
Case 1
MessageBox.Show("おはよう")
Case 2
MessageBox.Show("こんにちは")
Case 3
MessageBox.Show("こんばんは")
End Select
End Sub
End Class
これで以下のように表示されればOKです。
いかがでしたか?
ここで1つ疑問に思った方はおられないでしょうか?朝・昼・夜のいずれかをクリックすると他の項目は緑の点が消えますよね?ここは特にプログラミングしていないはずです。
実はこの項目で使用しているラジオボタンというものは常に1つしか選ばれないようにする性質があるため、自動的に他は選択からはずれるわけです。
複数の、意味合いが違ったラジオボタン、例えば今回の朝・昼・夜の他に、太郎君・花子ちゃん・次郎君からも1つ選択したいという場合はグループボックスというものを使います。
これは次回ご紹介したいと思います。
今回ご紹介したSelect文はIf文ほど頻繁ではないですが、使われるケースが多いのでおさえておきましょう。
|