Delphiで
i := 2
(Self.FindComponent('Label' + FormatFloat('0',i)) as TLabel).Caption := "A"
のような処理を.NETでも出来ないでしょうか?
開発環境はVB2500です。
>開発環境はVB2500です。
VB2005?
[Control.ControlCollection.Find メソッド]
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.controlcollection.find(VS.80).aspx
[フォーム内のコントロールを名前で探して取得する]
http://jeanne.wankuma.com/tips/form/findcontrol.html
[コントロールの配列を(動的に)作成する]
http://jeanne.wankuma.com/tips/control/arraycontrol.html
デザイナ画面で配置したコントロールを配列に登録するだけなら、
ラベル型の配列を用意して、画面の初期化処理で1つ1つ登録
するだけです。
特攻隊長まるるうさん
ありがとうございます。
開発環境は「Visual Studio 2005」でしたm(_ _)m
参照URLを見てはみたんですが・・・
なんとなく解るような?解らないような?
超初心者なんで理解するまでに時間がかかりそうですが
頑張ってみます。
特攻隊長まるるうさん
Controls.Findで解決できました。
ソースは以下の通りにしてみました
For i = 1 To 10
key = "Label" + i.ToString
returnValue = Me.Controls.Find(key, searchAllChildren)
returnValue(0).Text = "TEST" + i.ToString
Next
色々と方法はあると思います。もちろん Find でいいんだけど、フォームの
コンストラクタ(New)から初期化処理(Initialize_LabelArray())を呼んで
おいて、本当にラベルの配列を作っちゃっても良いし。
Private m_LabelArray() As Label
Private Sub Initialize_LabelArray()
ReDim m_LabelArray(2)
m_LabelArray(0) = Me.Label1
m_LabelArray(1) = Me.Label2
m_LabelArray(2) = Me.Label3
End Sub
Public Sub Test()
For index As Integer = 0 To m_LabelArray.GetLength(0) - 1
m_LabelArray(index).Text = "TEST" & index.ToString
Next
End Sub
ツイート | ![]() |