一回も披露したことのない豆知識

VBで倍数を出したい

よろしくお願いします。
おそらく基本なんだと思うのですが、さっぱりわかりません。

TextBox
Label
Buttonと並んでいて、

TextBoxに入った整数に対し、
Buttonを1度押すたびに、
Labelに倍数が表記されていく、
という趣旨なのですが。


まず、前段階として下記を作らされました。
Public Class Form1
Dim i As Integer
Dim m As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
i = TextBox1.Text
lblmessage.Text = i + m
m = lblmessage.Text
End Sub
End Class

このように、labelの数字がどんどん変わっていくのはできたのですが、問題は、

Text…10
Label…10
   20
   30
   40
   50
   60
   70
   80
   90
   100
となり、しかも一度に出るのではなく、Buttonひと押しにつき一つの解が出ね
次の一押しで改行され解が出る。
かつ、100で打ち止めにすること…だそうです。

いちおうめちゃくちゃですが、みんな風に作りました。

Public Class Form1
Dim a As Integer
Dim b As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim b As Integer = 10
a = TextBox1.Text
lblMessage.Text = a & ControlChars.CrLf & a + b
End Sub
End Class

どうかヒントだけでもお願いします。

A 回答 (1件)

はじめまして



突っ込みどころ満載すぎてあまりに楽しいので私も一緒に考えてみました。

全段階で作ったプログラムでは、ボタンを押すたびに数字がすべて切り替わるわけですね。

10 → 20 → 30 →…

qc4 さんのサンプルを拝見するに、問題はどんどん追加されるイメージですかね。

10 → 10 ( 改行 ) 20 → 10 ( 改行 ) 20 ( 改行 ) 30 →…

で、ポイントは 100 まで表示されたらそこで打ち止め。

Button1 の Click イベントで、100 より大きければ抜けるでいいと思います。

その観点から考えてソースを拝見しますに。

A. Dim b As Integer = 10 は不要

これでは TextBox1 に何を入れても 10 ずつ加算されますよ。あくまでも倍数の問題ですよね。
そういう意味では全段階で作ったプログラムも変なのですが、倍数の解釈次第ですか。

B. lblMessage.Text = a & ControlChars.CrLf & a + b は、何を表示しようとしているのかご理解されていますか。

最初の a は TextBox1.Text の値ですよね。つまり初期値の 10 です。
次の ControlChars.CrLf は改行。これはまぁいいとして。
最後の a + b は、初期値の 10 と、宣言されている 10 ですよね。
で、前段階で作ったプログラムの「m = lblmessage.Text」に当たる部分が見当たらないので、何度ボタンを押しても 10 ( 改行 ) 20 しか表示されないのではないでしょうかね。

以上を踏まえてプログラム

Public Class Form1
Dim i As Integer
Dim m As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
i = TextBox1.Text
m = i + m
If m > 100 Then
Return
End If
lblMessage.Text = lblMessage.Text & ControlChars.CrLf & m
End Sub
End Class

変数名など極力、前段階のプログラムに合わせました。
    • good
    • 0
この回答へのお礼

ありがとうございます。

100で打ち止めのところは初めてなので助かりました。が…

>m = i + m
これでいいんですか…。難しく考えてました。

>lblMessage.Text = lblMessage.Text & ControlChars.CrLf & m
これもこれでいいんですか。
&の意味を全然分かってませんでした。

どうもありがとうございます。
これから復習です。

お礼日時:2010/05/25 00:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報