性格いい人が優勝

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などで文字を更新するのではなく結合する連結演算子のようなものを回答していただけたらありがたいです。もし、そんなものはないよ、という場合も教えていただければと思います。よろしくおねがいします。

「VB2010でラベルに文字を結合したい」の質問画像

A 回答 (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)))
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/29 17:27

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