和暦変換マシン

 「理想体重ゲッター」に続いて、「VBの小部屋」のサンプルプログラム「和暦変換マシン」を、VB.NETに移植して見たいと思います。全く同じ機能では面白みがないので、こちらのは和暦と西暦との相互変換可能なものにしました。コードの内容の違いをお確かめ下さい。

フォーム作成

 SharpDevelopで新しいプロジェクトとして「和暦変換マシン」を登録します。次に中央のMainForm.vbのデザインタブをクリックし、中のフォームのサイズを調整後、下図のようにプログラム部品を貼り付けて行きます。

見やすくする為に、フォーム部分だけをズームアップしましょう。

 こちらのプログラムには新たにComboBoxが配置されています。年号をドロップダウンリストから選択する為のものです。それと、和暦から西暦へ逆変換する為の「西暦変換」ボタンも新たに付け加えています。

各部品のプロパティ

 では次に各部品のプロパティを見て行きましょう。今回も各部品の名称は全てデフォルトのものを使用します。これくらいの簡単なものなら、そう特別な名前を付けてやる必要もないでしょうし…(^^ゞ

MainForm(メインフォーム)    
 フォーム自体に名前を付けてやりましょう。「Appearance」の「Text」欄に「和暦変換マシン」と打ち込みます。  次に、キーボードの「Enter」キーを押した時に、デフォルトで「和暦変換」ボタンが反応するように、「Misc」の「AcceptButton」に「button1」(和暦変換)を選択します。
comboBox1(コンボボックス)    
 コンボボックスに表示する要素を登録・編集するには、「Data」の「Items」の欄の右端の「...」ボタンをクリックします。すると、右のようなウインドウが開くので、そこで表示するデータの要素を登録・編集します。

プログラムコード

 では最後に、各ボタンを押した時の処理コードを記述して行きます。今回のプログラムも非常に簡単なものなので、各コマンドボタンを押した時の処理コードをソースに書いて行けばそれでO.K.です。ソースコードを表示した画面は下図のようになります。

では、各ボタンを押した時の実際の処理コードを見て行きましょう。ここでは内容の簡単なものから見て行きます。

プログラムのスタート時

Public Sub New()
  ' The Me.InitializeComponent call is required for Windows Forms designer support.
  Me.InitializeComponent()
  comboBox1.SelectedItem = "選択"
  '
  ' TODO : Add constructor code after InitializeComponents
  '
End Sub

プログラムを立ち上げた際に、コンボボックスの表示が「選択」になるように、赤色部分のコードを付け加えます。

「終了」ボタン(button4)

Sub Button4Click(sender As Object, e As System.EventArgs)
  'フォームを閉じる
  Me.Close
End Sub

「Me」は自分自身を指しますので、「Me.Close」はフォームを閉じる命令になります。

「クリア」ボタン(button3)

Sub Button3Click(sender As Object, e As System.EventArgs)
  textBox1.Text = ""
  textBox2.Text = ""
  comboBox1.SelectedItem = "選択"
End Sub

「クリア」ボタンは、テキストボックスやコンボボックスの内容をクリアする為のボタンなので、このボタンが押された時は、各テキストボックス内の表示をなしにして、且つコンボボックスの表示をデフォルトの「選択」に戻す命令が書かれています。

「和暦変換」ボタン(button1)

Sub Button1Click(sender As Object, e As System.EventArgs)
  '変数の宣言
  Dim seireki As Integer

  If textBox1.Text = "" Then
    MessageBox.Show("データが入力されていません。", "注意")
  Else If Not IsNumeric(textBox1.Text) Then
    MessageBox.Show("データが不正です。", "注意")
    textBox1.Text = ""
  Else
    seireki = CInt(textBox1.Text)
    Select Case seireki
      Case 1868 To 1911
        comboBox1.SelectedItem = "明治"
        textBox2.Text = seireki - 1867
      Case 1912 To 1925
        comboBox1.SelectedItem = "大正"
        textBox2.Text = seireki - 1911
      Case 1926 To 1988
        comboBox1.SelectedItem = "昭和"
        textBox2.Text = seireki - 1925
      Case 1989 To 3000
        comboBox1.SelectedItem = "平成"
        textBox2.Text = seireki - 1988
      Case Else
        MessageBox.Show("データが計算範囲を超えています。", "注意")
        textBox1.Text = ""
    End Select
  End If
End Sub

 「和暦変換」ボタンを押した際の命令です。まず、変数seirekiを数値型Integerで宣言してやります。次はお決まりのエラー対策です。エラー対策に引っかからなかった時、初めてメインの処理に入ります。まず、テキストボックス1に入力された値を数値型に変換して変数seirekiに格納します。そして、「Select Case」文を使って、変数seirekiの値に応じて、それぞれ和暦に変換する処理を施します。「平成」に関しては年数の上限が分からないので、適当に「3000」に設定しています。打ち込まれた年数が指定の範囲を超えている場合は、警告のダイアログボックスを表示して打ち込まれた内容を消去します。

「西暦変換」ボタン(button2)

Sub Button2Click(sender As Object, e As System.EventArgs)
  '変数の宣言
  Dim wareki As Integer

  If textBox2.Text = "" Then
    MessageBox.Show("データが入力されていません。", "注意")
  Else If comboBox1.SelectedItem = "選択" Then
    MessageBox.Show("年号を選択して下さい。", "注意")
  Else
    wareki = CInt(textBox2.Text)
    If comboBox1.SelectedItem = "明治" Then
      textBox1.Text = wareki + 1867
    Else If comboBox1.SelectedItem = "大正" Then
      textBox1.Text = wareki + 1911
    Else If comboBox1.SelectedItem = "昭和" Then
      textBox1.Text = wareki + 1925
    Else If comboBox1.SelectedItem = "平成" Then
      textBox1.Text = wareki + 1988
    End If
  End If
End Sub

 「西暦変換」ボタンを押した際の命令です。まず、変数warekiを数値型Integerで宣言してやります。次はお決まりのエラー対策です。エラー対策に引っかからなかった時、初めてメインの処理に入ります。まず、テキストボックス2に入力された値を数値型に変換して変数warekiに格納します。そして、コンボボックスで選択された年号に応じて西暦に変換する処理を盛り込みます。最初「Select Case」文を使おうとしたのですが、コンパイル時にエラーが出たので「If」文に変更しました。

 今回新たに登場したコンボボックスですが、選択された項目は「SelectedItem」プロパティで取得します。では、又の会う日を楽しみに、ごきげんよう(^o^)丿

理想体重ゲッター 前へ

HOME

次へ