VB、教えてください。
5つのラベルが縦に並んでいます。
label0
label1
label2
label3
label4
あらかじめ、
Dim m as integer=0
を宣言し、
どうにかして
"label"という文字列とmという数字をくっつけ、
label0
label1…
という風にできないでしょうか。
そして
label"m".text=10*m
というような表示を作りたいのですが。
下記のようなイメージです。分かりにくかったらごめんなさい。
Public Class Form1
Dim m As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
lblmessage(+("m").Text = 10*m
m = m + 1
End Sub
End Class
Public Class Form1
Dim m As Integer = 0
Private Sub Buttn1_Click(...
Me.Controls("lblMessage" & m).Text = 10 * m
m = m + 1
End Sub
End Class
質問を直訳するとこの回答だな。
質問者
お礼
>Me.Controls("lblMessage" & m).Text = 10 * m
ここで引っかかってしまいます。
でも私がほしい答えっぽいんでけどね。
…って、自分でも努力しろって話ですよね。。。。
あらあら、前回の配列変数から、またレベルをもう少し上げてしまって大丈夫なのですか?
基本的に、VB.Net では、今までのコントロール配列はなくなっているわけですね。前回、こちらは暫定球を出しておいたのに、それ以上のレベルを求めても、どうなのかなって思います。
注意:Labelのオブジェクト名は、Label0 からではなく、Label1 からですから、もし違うようでしたら、Form1_Load の起動イベントを書き換えてください。i の初期値は、0 ですから、Button 側のコードは変更の必要はないはずです。 m = 0 は、初期値は、0 ですから、そのままにします。
'//
Public Class Form1
Private _Labels As New List(Of Label)
Dim m As Integer
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me._Labels.Add(Me.Label1)
Me._Labels.Add(Me.Label2)
Me._Labels.Add(Me.Label3)
Me._Labels.Add(Me.Label4)
Me._Labels.Add(Me.Label5)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
i = m Mod 5
Me._Labels(i).Text = (m + 1) * 10
m = m + 1
End Sub
End Class
補足
もうしわけありません。 近況ですが、この問題、まだ解決できていません。 解決しましたらご報告させてください。