0

GroupBox 内に複数のラベルを含むこのフォームを取得しました。すべて同じ名前と番号が付いています (デフォルトの Label1、Label2、LabelN に似ています)。

このラベルの外観と内容を sub() で変更していますが、次のようなことができる完全な名前を書かないと各ラベルを参照する方法がわかりません:

To All Labels inside Group Box 
Sub(LabelN)

現在、ラベルの配列を作成し、フォームの読み込み時に名前を割り当てています。次のようなものです。

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LabelMatrix(0) = Label1
        LabelMatrix(1) = Label2
        LabelMatrix(2) = Label3
        LabelMatrix(3) = Label4
....
    End Sub

しかし、これを行うためのより良い(そしてよりスマートな)方法があるに違いないと思います。

Groups ボックス内の Labels オブジェクトの合計を取得するようにしたかったのですが、うまくいきませんでした。

4

2 に答える 2

2

それは非常に簡単で、配列は必要ありません:

For Each lbl As Label In MyGroupBox.Controls.OfType(Of Label)()
    ' ... do something with "lbl"
Next lbl
于 2013-11-08T19:10:49.310 に答える
1

ループを使用してコントロール名を作成し、Controls.Find() を使用して目的のコントロールへの参照を取得できます。何かのようなもの:

    Dim lbl As Label
    Dim matches() As Control
    For i As Integer = 1 To 10
        matches = Me.Controls.Find("Label" & i, True)
        If matches.Length > 0 AndAlso TypeOf matches(0) Is Label Then
            lbl = DirectCast(matches(0), Label)
            ' ... do something with "lbl" ...
        End If
    Next
于 2013-11-07T15:47:39.240 に答える