• 締切済み

VB2010でラベルに文字を結合したい

VB2010でTextboxで辺の長さの数値を入力し、その数値分「*」を表示して正方形を作るアルゴリズムを考えています。どんな感じかは添付画像を参照していただければと思います。 Dim saizu As Integer Dim i, j As Integer saizu = TextBox1.Text For i = 1 To saizu For j = 1 To saizu Label1.Text = "*" Next Label1.Text = vbLf Next 考え方はこんな感じだと思うのですが、このままだとLabel1の中身が毎回更新されてしまい、結局何も表示されないという結果になることに気づきました。 確かVBにはLabelの手前に何か連結演算子のようなものをつけることで、更新されるのではなく追加していくというふうにできたと思うのです(記憶違いならこの質問自体が意味のないことになってしまうのですが…)。検索エンジンでいろいろと検索しては見たのですが、検索ワードがどれも曖昧な所為か私が必要としている答えにたどり着くことができませんでした。 曖昧な質問で申し訳ないのですが、Labelなどで文字を更新するのではなく結合する連結演算子のようなものを回答していただけたらありがたいです。もし、そんなものはないよ、という場合も教えていただければと思います。よろしくおねがいします。

みんなの回答

回答No.1

LabelはGUI部品と結びついているだけの,単なるクラスです。 なので,Labelだからといって特殊なことは存在しません。 Label.TextはSystem.String型のプロパティですから, ・あらかじめ文字列を作ってから代入する ・&=演算子や,&演算子と=演算子を使ってTextプロパティ値を逐次更新する といった方法があります。 基本的には,文字列を作ってから代入した方がよいでしょう。 Textプロパティの内部でUIの更新が行われるので,あまり好ましくありません。 なお,改行はvbNewLineまたはEnvironment.NewLineを使います。 Windows環境であればvbCrLfと同等のはずです。 おまけ。 規則性があるならString.JoinやString.ConcatとLinq使うのも手ではあります。 Label1.Text = String.Join(vbNewLine, Enumerable.Range(1, saizu).Select(Function (n) New String("*"c, n)))

ann5210
質問者

お礼

詳しい説明をありがとうございました。 無事解決いたしました。

関連するQ&A

専門家に質問してみよう