- ベストアンサー
演算
TextBox1の値とTextBox2の値の和をTextBox3に表示したいんですけど、どう表記すればいいんですか? 自動計算にするためにTextChangedを使いたいのですが、1,2,3どこにプログラムを表記すればいいのですか? Visual Basic 2008です 初心者ですいません
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
TextBox1とTextBox2のTextChangedに記述する必要があると思います。 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged TextBox3.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)).ToString End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged TextBox3.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)).ToString End Sub 同じ計算が2つあるので、計算部分をサブルーチン化するのはどうでしょうか? Private Sub calc_TextBox3() TextBox3.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)).ToString End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged calc_TextBox3() End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged calc_TextBox3() End Sub またはHandles以降に複数のオブジェクトのイベントを記述する事で、複数のオブジェクトからのイベントを1つで処理する事もできるようです。 Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged TextBox3.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)).ToString End Sub またはTextBox2ではTextBox1と同じ事をするのでTextBox2_TextChangedからTextBox1_TextChangedを呼び出す方法もあると思います。 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged TextBox3.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)).ToString End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged TextBox1_TextChanged(sender, e) End Sub p.s. TextBoxは数値以外の文字なども入力できてしまうので、チェックが必要になります。 数値の場合はTextBoxではなくNumericUpDownを使うと数値のみ入力可能で、最大値や最小値や小数点以下の桁数指定や3桁カンマの表示などが指定出来て便利なようです。