14.選択肢によって変わるメッセージ(その2)-条件分岐
 

前回に引き続き、選択した項目により違うメッセージが表示されるプログラムを作成していきます。

選択した項目が何かを識別するために、前回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文ほど頻繁ではないですが、使われるケースが多いのでおさえておきましょう。