質問編集履歴

1 〈code〉内にソースを載せなおしました。

gyaSon

gyaSon score 16

2019/06/06 16:52  投稿

プログラムソースの冗長化解消
###現状
以前、ご指導いただきましたプログラムソースの発展?です。
else Ifにて書きまくった条件文の冗長化を解消したいです!
Functionを利用してみては?とアドバイスをいただきましたが
調べてみてもなかなか、コンパイルすら通らない状況です。
下記に条件文を記載いたします。
下線から各ボタンの条件文になります。
###ソース
```Public Class Form1
``````Public Class Form1
   Private Const Dollar As Integer = 108
   Private Const EUR As Integer = 120
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim strData() As String = {"¥", "$", "€"}
       'コンボボックスにアイテムを追加する
       ComboBox1.Items.AddRange(strData)
       ComboBox2.Items.AddRange(strData)
       ComboBox3.Items.AddRange(strData)
   End Sub
---------------------------------------------------------------------------------------------------------
  ** Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '円に変換
       If ComboBox1.SelectedIndex = 0 Then 'テキストボックス1の円変換
           Label1.Text = "¥" & TextBox1.Text
       ElseIf ComboBox1.SelectedIndex = 1 Then
           Label1.Text = "¥" & TextBox1.Text * Dollar
       ElseIf ComboBox1.SelectedIndex = 2 Then
           Label1.Text = "¥" & TextBox1.Text * EUR
       End If
       If ComboBox2.SelectedIndex = 0 Then 'テキストボックス2を円変換
           Label2.Text = "¥" & TextBox2.Text
       ElseIf ComboBox2.SelectedIndex = 1 Then
           Label2.Text = "¥" & TextBox2.Text * Dollar
       ElseIf ComboBox2.SelectedIndex = 2 Then
           Label2.Text = "¥" & TextBox2.Text * EUR
       End If
       If ComboBox3.SelectedIndex = 0 Then 'テキストボックス3を円変換
           Label3.Text = "¥" & TextBox3.Text
       ElseIf ComboBox3.SelectedIndex = 1 Then
           Label3.Text = "¥" & TextBox3.Text * Dollar
       ElseIf ComboBox3.SelectedIndex = 2 Then
           Label3.Text = "¥" & TextBox3.Text * EUR
       End If
   End Sub
   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '$に変換
       If ComboBox1.SelectedIndex = 0 Then 'テキストボックス1のドル変換
           Label1.Text = CStr("$" & (String.Format((TextBox1.Text / Dollar).ToString("F2"))))
       ElseIf ComboBox1.SelectedIndex = 1 Then
           Label1.Text = "$" & TextBox1.Text
       ElseIf ComboBox1.SelectedIndex = 2 Then
           Label1.Text = CStr("$" & (String.Format((TextBox1.Text * EUR / Dollar).ToString("F2"))))
       End If
       If ComboBox2.SelectedIndex = 0 Then 'テキストボックス2をドル変換
           Label2.Text = CStr("$" & (String.Format((TextBox2.Text / Dollar).ToString("F2"))))
       ElseIf ComboBox2.SelectedIndex = 1 Then
           Label2.Text = "$" & TextBox2.Text
       ElseIf ComboBox2.SelectedIndex = 2 Then
           Label2.Text = CStr("$" & (String.Format((TextBox2.Text * EUR / Dollar).ToString("F2"))))
       End If
       If ComboBox3.SelectedIndex = 0 Then 'テキストボックス3をドル変換
           Label3.Text = CStr("$" & (String.Format((TextBox3.Text / Dollar).ToString("F2"))))
       ElseIf ComboBox3.SelectedIndex = 1 Then
           Label3.Text = "$" & TextBox3.Text
       ElseIf ComboBox3.SelectedIndex = 2 Then
           Label3.Text = CStr("$" & (String.Format((TextBox3.Text * EUR / Dollar).ToString("F2"))))
       End If
   End Sub
   Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '€に変換
       If ComboBox1.SelectedIndex = 0 Then 'テキストボックス1のユーロ変換
           Label1.Text = CStr("€" & (String.Format((TextBox1.Text / EUR).ToString("F2"))))
       ElseIf ComboBox1.SelectedIndex = 1 Then
           Label1.Text = CStr("€" & (String.Format((TextBox1.Text * Dollar / EUR).ToString("F2"))))
       ElseIf ComboBox1.SelectedIndex = 2 Then
           Label1.Text = "€" & TextBox1.Text
       End If
       If ComboBox2.SelectedIndex = 0 Then 'テキストボックス2をユーロ変換
           Label2.Text = CStr("€" & (String.Format((TextBox2.Text / EUR).ToString("F2"))))
       ElseIf ComboBox2.SelectedIndex = 1 Then
           Label2.Text = CStr("€" & (String.Format((TextBox2.Text * Dollar / EUR).ToString("F2"))))
       ElseIf ComboBox2.SelectedIndex = 2 Then
           Label2.Text = "€" & TextBox2.Text
       End If
       If ComboBox3.SelectedIndex = 0 Then 'テキストボックス3をユーロ変換
           Label3.Text = CStr("€" & (String.Format((TextBox3.Text / EUR).ToString("F2"))))
       ElseIf ComboBox3.SelectedIndex = 1 Then
           Label3.Text = CStr("€" & (String.Format((TextBox3.Text * Dollar / EUR).ToString("F2"))))
       ElseIf ComboBox3.SelectedIndex = 2 Then
           Label3.Text = "€" & TextBox3.Text
       End If
   End Sub
---------------------------------------------------------------------------------------------------------
End Class
コード  
```  
###したいこと
線内の各ボタンにあります条件分の冗長化の解消、スッキリまとめるにはどうしたら
いいのでしょうか。
足りない情報等ありましたら何なりとお聞きください。
ご指導の程宜しくお願い致します。
  • Visual Studio

    4406 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VB.NET

    1718 questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る