Schleife fürs ändern von Labels (VB 2008)

Jin

Grünschnabel
Hi zusammen,

bin auf der Suche nach einer sinnvollen Art in VB 2008 mehrere Labels gleichzeitig anzusprechen (z.B. mehrere zu enablen). Wenn ich 50 durchnummerierte Labels habe kann man das sicher anders lösen als jedes einzeln festzulegen..

Grüsse

Jin
 
Hallo, hier ein Beispiel mit Control Array.
Da werden 50 Labels erzeugt, die man dann über eine Schleife ansprechen kann.
Visual Basic:
Public Class Form1
    Private lblArray(49) As Label ' Dies wird unser Control-Array!

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' 50 Labels neu erzeugen
        For i As Integer = 0 To 49

            ' Neues Label erzeugen
            lblArray(i) = New Label

            ' Das erzeugte Label verwenden:
            With lblArray(i)

                ' Parent festlegen und Controls-Collection erweitern
                .Parent = Me
                .Parent.Controls.Add(lblArray(i))

                ' Verwaltungsinformationen zuweisen
                .Name = "Label" & CStr(i)
                .TabIndex = i

                ' Darstellung: Beschriften und positionieren
                .Text = "Zahl" & CStr(i).ToString
                .Size = New Size(80, 12)
                .Location = New Point(10, i * 2 * .Height)
                .Visible = True

                ' Auf das Click-Ereignis reagieren können:
                AddHandler .Click, AddressOf lblArray_Click

            End With

        Next i

    End Sub

    Private Sub lblArray_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        ' Click-Ereignis des Label-Arrays auswerten
        Dim itemClicked As Label = CType(sender, Label)
        Dim index As Integer = -1I

        For i As Integer = LBound(lblArray) To UBound(lblArray)
            If lblArray(i) Is itemClicked Then
                index = i
                Exit For
            End If
        Next

        If index > -1 Then ' Element im Array gefunden (sonst index = -1)
            ' Kurze Informations-MessageBox für das Codebeispiel
            MessageBox.Show("Sie haben den Label Nr. " & CStr(index) & " angeklickt", _
                            "Index des Buttons ermittelt", _
                            MessageBoxButtons.OK, _
                            MessageBoxIcon.Information)
        End If

    End Sub

    Private Sub btnDisabled_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisabled.Click
        For N As Integer = 0 To lblArray.Length - 1
            lblArray(N).Enabled = False
        Next
    End Sub

    Private Sub btnEnabled_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnabled.Click
        For N As Integer = 0 To lblArray.Length - 1
            lblArray(N).Enabled = True
        Next
    End Sub
End Class
 
Zurück