ラベルを配列扱いするには?

解決


はじめの一歩  2007-04-11 17:38:47  No: 136035

Delphiで
i := 2
(Self.FindComponent('Label' +  FormatFloat('0',i)) as TLabel).Caption := "A"
のような処理を.NETでも出来ないでしょうか?


はじめの一歩  2007-04-11 17:42:36  No: 136036

開発環境はVB2500です。


特攻隊長まるるう  2007-04-11 18:00:59  No: 136037

>開発環境は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つ登録
するだけです。


はじめの一歩  2007-04-12 01:01:39  No: 136038

特攻隊長まるるうさん
ありがとうございます。

開発環境は「Visual Studio 2005」でしたm(_ _)m

参照URLを見てはみたんですが・・・
なんとなく解るような?解らないような?
超初心者なんで理解するまでに時間がかかりそうですが
頑張ってみます。


はじめの一歩  2007-04-17 22:49:11  No: 136039

特攻隊長まるるうさん

Controls.Findで解決できました。

ソースは以下の通りにしてみました

For i = 1 To 10
   key = "Label" + i.ToString
   returnValue = Me.Controls.Find(key, searchAllChildren)
   returnValue(0).Text = "TEST" + i.ToString
Next


特攻隊長まるるう  2007-04-18 00:45:35  No: 136040

色々と方法はあると思います。もちろん 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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加