質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

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

VB.NET

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

Q&A

解決済

1回答

1837閲覧

comboboxとtextboxの連携

gyaSon

総合スコア16

Visual Studio

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

VB.NET

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

0グッド

0クリップ

投稿2019/06/03 08:03

編集2019/06/04 05:57

前提・実現したいこと

コンボボックスとテキストボックスの連携
その値を用いた、外貨変換プログラムの作成。

ここに質問の内容を詳しく書いてください。
開発環境 visual studio2019 言語 VB.NETで作成しています。
コンボボックスにて対象の通貨(¥、$、€)を選択し、テキストボックスに入力された数値を
¥、$、€のいずれかに変換し、ラベルに表示させるソースを作成をしています。

入力の値としてコンボボックスとテキストボックスの連携させていのですが
VB.NETを各サイトを参考にしようと探していたのですがこれだという結果が得られません。

皆さんのお知恵をお借りできればと思います。

###求めている動作のイメージ
コンボボックス:¥
テキストボックス:108

入力された数値が¥108として
この数値を$に変換する。

ラベルに$1を表示する。

レートは下記の通りで宣言しています。
$=108
€=120

###その後
求めておりました動作は何とかできるようになりました。
zuishinさんのアドバイスを組めたかどうかですが・・・。

ソースコード記載いたします。

Public

1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 2 3 Dim strData() As String = {"\", "$", "€"} 4 'コンボボックスにアイテムを追加する 5 ComboBox1.Items.AddRange(strData) 6 ComboBox2.Items.AddRange(strData) 7 ComboBox3.Items.AddRange(strData) 8 9 End Sub 10 11 12 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '円に変換 13 Dim Dollar As String = 108 14 Dim EUR As String = 120 15 16 'テキストボックス1の円変換 17 18 If ComboBox1.SelectedIndex = 0 Then 19 Label1.Text = ("\" & TextBox1.Text) 20 ElseIf ComboBox1.SelectedIndex = 1 Then 21 Label1.Text = ("\" & TextBox1.Text * Dollar) 22 ElseIf ComboBox1.SelectedIndex = 2 Then 23 Label1.Text = ("\" & TextBox1.Text * EUR) 24 End If 25 26 'テキストボックス2を円変換 27 28 If ComboBox2.SelectedIndex = 0 Then 29 Label2.Text = ("\" & TextBox2.Text) 30 ElseIf ComboBox2.SelectedIndex = 1 Then 31 Label2.Text = ("\" & TextBox2.Text * Dollar) 32 ElseIf ComboBox2.SelectedIndex = 2 Then 33 Label2.Text = ("\" & TextBox2.Text * EUR) 34 End If 35 36 'テキストボックス3を円変換 37 38 If ComboBox3.SelectedIndex = 0 Then 39 Label3.Text = ("\" & TextBox3.Text) 40 ElseIf ComboBox3.SelectedIndex = 1 Then 41 Label3.Text = ("\" & TextBox3.Text * Dollar) 42 ElseIf ComboBox3.SelectedIndex = 2 Then 43 Label3.Text = ("\" & TextBox3.Text * EUR) 44 End If 45 End Sub 46 47 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '$に変換 48 Dim Dollar As String = 108 49 Dim EUR As String = 120 50 51 'テキストボックス1のドル変換 52 53 If ComboBox1.SelectedIndex = 0 Then 54 Label1.Text = Format((TextBox1.Text / Dollar), "0.00") 55 Label1.Text = CStr("$" & Label1.Text) 56 ElseIf ComboBox1.SelectedIndex = 1 Then 57 Label1.Text = CStr("$" & TextBox1.Text) 58 ElseIf ComboBox1.SelectedIndex = 2 Then 59 Label1.Text = Format((TextBox1.Text * EUR / Dollar), "0.00") 60 Label1.Text = CStr("$" & Label1.Text) 61 End If 62 63 'テキストボックス2をドル変換 64 65 If ComboBox2.SelectedIndex = 0 Then 66 Label2.Text = Format((TextBox2.Text / Dollar), "0.00") 67 Label2.Text = CStr("$" & Label2.Text) 68 ElseIf ComboBox2.SelectedIndex = 1 Then 69 Label2.Text = CStr("$" & TextBox2.Text) 70 ElseIf ComboBox2.SelectedIndex = 2 Then 71 Label2.Text = Format((TextBox2.Text * EUR / Dollar), "0.00") 72 Label2.Text = CStr("$" & Label2.Text) 73 End If 74 75 'テキストボックス3をドル変換 76 77 If ComboBox3.SelectedIndex = 0 Then 78 Label3.Text = Format((TextBox3.Text / Dollar), "0.00") 79 Label3.Text = CStr("$" & Label3.Text) 80 ElseIf ComboBox3.SelectedIndex = 1 Then 81 Label3.Text = CStr("$" & TextBox3.Text) 82 ElseIf ComboBox3.SelectedIndex = 2 Then 83 Label3.Text = Format((TextBox3.Text * EUR / Dollar), "0.00") 84 Label3.Text = CStr("$" & Label3.Text) 85 End If 86 End Sub 87 88 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '€に変換 89 90 Dim Dollar As String = 108 91 Dim EUR As String = 120 92 93 'テキストボックス1のユーロ変換 94 95 If ComboBox1.SelectedIndex = 0 Then 96 Label1.Text = Format((TextBox1.Text / EUR), "0.00") 97 Label1.Text = CStr("€" & Label1.Text) 98 ElseIf ComboBox1.SelectedIndex = 1 Then 99 Label1.Text = Format((TextBox1.Text * Dollar / EUR), "0.00") 100 Label1.Text = CStr("€" & Label1.Text) 101 ElseIf ComboBox1.SelectedIndex = 2 Then 102 Label1.Text = CStr("€" & TextBox1.Text) 103 End If 104 105 'テキストボックス2をユーロ変換 106 107 If ComboBox2.SelectedIndex = 0 Then 108 Label2.Text = Format((TextBox2.Text / EUR), "0.00") 109 Label2.Text = CStr("€" & Label2.Text) 110 ElseIf ComboBox2.SelectedIndex = 1 Then 111 Label2.Text = Format((TextBox2.Text * Dollar / EUR), "0.00") 112 Label2.Text = CStr("€" & Label2.Text) 113 ElseIf ComboBox2.SelectedIndex = 2 Then 114 Label2.Text = CStr("€" & TextBox2.Text) 115 End If 116 117 'テキストボックス3をユーロ変換 118 119 If ComboBox3.SelectedIndex = 0 Then 120 Label3.Text = Format((TextBox3.Text / EUR), "0.00") 121 Label3.Text = CStr("€" & Label3.Text) 122 ElseIf ComboBox3.SelectedIndex = 1 Then 123 Label3.Text = Format((TextBox3.Text * Dollar / EUR), "0.00") 124 Label3.Text = CStr("€" & Label3.Text) 125 ElseIf ComboBox3.SelectedIndex = 2 Then 126 Label3.Text = CStr("€" & TextBox3.Text) 127 End If 128 End Sub 129 130End Class 131

ここから省く、もしくはより分かりやすくまとめる方法が
あるのでしょうが今の私の知識ではこれで何とかというところです。

御助力をお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/06/03 08:05

どこがわからないんですか? 全部とか言わないでくださいよ。
gyaSon

2019/06/03 08:21 編集

ここで伺いたいのはコンボボックスとテキストボックスの連携の方法です。 ラベルに選択されたコンボボックスの値を表示はネットにて確認できたのですが テキストとの連携がどうにもわからない状況です
Zuishin

2019/06/03 08:18

イベントドリブンはわかりますか?
gyaSon

2019/06/03 08:29

わかります。 クリック等でイベント発生し、処理を実行していく という認識でいいですか?
Zuishin

2019/06/03 08:32

そうですね。 コンボボックスの内容とテキストボックスの内容から結果を計算して表示するメソッドをまず作り、コンボボックスが変化した時とテキストボックスが変化した時の両方からそれを呼べばできると思います。
Zuishin

2019/06/03 08:35 編集

また、計算(ビジネスロジック)と表示(出力)は分離できます。 一般にこれらは一つのメソッドにまとめるのではなく、別のメソッドにするのが良い方法です。 まず計算から作ってみては?
gyaSon

2019/06/03 08:47

かしこまりました! まずはアドバイスいただきましたアプローチで 自分なりに作成していきます。 ありがとうございます。
k.matsuda

2019/06/03 15:32

また、分からなければ作ったコードを記載して質問して下さいね。
k.matsuda

2019/06/04 23:24

comboboxもtextboxもlabelもひとつづつで良いような気もしますが… 3つある理由はなんでしょうか?
gyaSon

2019/06/04 23:53

作る仕様としてcombo,text,labelを3つ用意しろとのこと・・・。 理由は何なんでしょうね。。。
Zuishin

2019/06/05 00:10

多分、共通する部分をメソッドにまとめなさいという課題ではないですか? たとえばこの部分 If ComboBox1.SelectedIndex = 0 Then 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 これは次のように書き直すことができます。 var label = Label1; If ComboBox1.SelectedIndex = 0 Then label.Text = ("\" & TextBox1.Text) ElseIf ComboBox1.SelectedIndex = 1 Then label.Text = ("\" & TextBox1.Text * Dollar) ElseIf ComboBox1.SelectedIndex = 2 Then label.Text = ("\" & TextBox1.Text * EUR) End If これで Label1 が消えたので、label に Label2 を入れても Label3 を入れても同じように使うことができます。 このような共通部分を独立したメソッドに切り出して Label1, Label2, Label3 を引数に呼び出せばコードの量をかなり減らすことができます。 ラベルだけではなく、コンボボックスやテキストボックスについても引数で渡せば、メソッドは一つで済みます。
k.matsuda

2019/06/05 00:22

ちなみに。IF文で分岐させていますが select case文でも分岐させることが出来ますよ。 分岐数が3つなので、どちらを使うかは好みで良いと思いますが 変数DollarとEURは、クラスレベルで宣言すれば各イベントごとに宣言する必要はないかと・・・
gyaSon

2019/06/05 01:50

貴重なご意見ありがとうございます。 こちらを参考にさらなる修正を加えていきます。 ちなみにい一旦、この質問を解決済みにしたいのですが どのようにすれば解決済みにできますか?
k.matsuda

2019/06/05 01:53

自己解決にコメントすれば、解決済みになりますよ。
k.matsuda

2019/06/05 01:58

ああ、課題だったのですね。 不自然な仕様だと思いました。
guest

回答1

0

自己解決

皆様のアドバイスにより光明が見えてきました!
ありがとうございます。

投稿2019/06/05 01:55

gyaSon

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問