在VB.NET中使用for语句设置标签的属性

在VB.NET中使用for语句设置标签的属性,vb.net,Vb.net,我正在尝试一些我不知道是否可能做到的事情 当我按下按钮时,许多标签的属性.visible必须更改,我使用以下方法进行更改: Private Sub AlakranPositionsButton_Click(sender As Object, e As EventArgs) Handles AlakranPositionsButton.Click If AlakranLabel.Visible = False Then Label4.Visible = True

我正在尝试一些我不知道是否可能做到的事情

当我按下按钮时,许多标签的属性.visible必须更改,我使用以下方法进行更改:

Private Sub AlakranPositionsButton_Click(sender As Object, e As EventArgs) Handles AlakranPositionsButton.Click
    If AlakranLabel.Visible = False Then
        Label4.Visible = True
        Label5.Visible = True
        AlakranLabel.Visible = True
        Alakran1Label.Visible = True
        Alakran2Label.Visible = True
        Alakran3Label.Visible = True
        Alakran4Label.Visible = True
        Alakran5Label.Visible = True
        Alakran6Label.Visible = True
        Alakran7Label.Visible = True
        Alakran8Label.Visible = True
        Alakran9Label.Visible = True
        Alakran10Label.Visible = True
        Alakran1YTextBox.Visible = True
        Alakran2YTextBox.Visible = True
        Alakran3YTextBox.Visible = True
        Alakran4YTextBox.Visible = True
        Alakran5YTextBox.Visible = True
        Alakran6YTextBox.Visible = True
        Alakran7YTextBox.Visible = True
        Alakran8YTextBox.Visible = True
        Alakran9YTextBox.Visible = True
        Alakran10YTextBox.Visible = True
        Alakran1XTextBox.Visible = True
        Alakran2XTextBox.Visible = True
        Alakran3XTextBox.Visible = True
        Alakran4XTextBox.Visible = True
        Alakran5XTextBox.Visible = True
        Alakran6XTextBox.Visible = True
        Alakran7XTextBox.Visible = True
        Alakran8XTextBox.Visible = True
        Alakran9XTextBox.Visible = True
        Alakran10XTextBox.Visible = True
    Else
        Label4.Visible = False
        Label5.Visible = False
        AlakranLabel.Visible = False
        Alakran1Label.Visible = False
        Alakran2Label.Visible = False
        Alakran3Label.Visible = False
        Alakran4Label.Visible = False
        Alakran5Label.Visible = False
        Alakran6Label.Visible = False
        Alakran7Label.Visible = False
        Alakran8Label.Visible = False
        Alakran9Label.Visible = False
        Alakran10Label.Visible = False
        Alakran1YTextBox.Visible = False
        Alakran2YTextBox.Visible = False
        Alakran3YTextBox.Visible = False
        Alakran4YTextBox.Visible = False
        Alakran5YTextBox.Visible = False
        Alakran6YTextBox.Visible = False
        Alakran7YTextBox.Visible = False
        Alakran8YTextBox.Visible = False
        Alakran9YTextBox.Visible = False
        Alakran10YTextBox.Visible = False
        Alakran1XTextBox.Visible = False
        Alakran2XTextBox.Visible = False
        Alakran3XTextBox.Visible = False
        Alakran4XTextBox.Visible = False
        Alakran5XTextBox.Visible = False
        Alakran6XTextBox.Visible = False
        Alakran7XTextBox.Visible = False
        Alakran8XTextBox.Visible = False
        Alakran9XTextBox.Visible = False
        Alakran10XTextBox.Visible = False
    End If
我认为一定有办法做到这一点:

If AlakranLabel.Visible = False Then
        For i As Integer = 0 To 20
            Label(i).visible = False
        Next
    Else
        For i As Integer = 0 To 20
            Label(i).visible = True
        Next
    End If
    For Each l As Label In Me.Controls.OfType(Of Label)
        l.Visible = True
    Next
有人知道怎么做吗?我不知道怎么做

谢谢

解决方案 名单的宣布:

Dim listObjectiveLabels As List(Of Label) = New List(Of Label)
Dim listObjectiveTextBox As List(Of TextBox) = New List(Of TextBox)
在列表中添加每个标签和文本框:

listAlakranLabels.Add(AlakranLabel)
    listAlakranLabels.Add(Alakran1Label)
    listAlakranLabels.Add(Alakran2Label)
    listAlakranLabels.Add(Alakran3Label)
    listAlakranLabels.Add(Alakran4Label)
    listAlakranLabels.Add(Alakran5Label)
    listAlakranLabels.Add(Alakran6Label)
    listAlakranLabels.Add(Alakran7Label)
    listAlakranLabels.Add(Alakran8Label)
    listAlakranLabels.Add(Alakran9Label)
    listAlakranLabels.Add(Alakran10Label)

    listAlakranTextBox.Add(Alakran1YTextBox)
    listAlakranTextBox.Add(Alakran2YTextBox)
    listAlakranTextBox.Add(Alakran3YTextBox)
    listAlakranTextBox.Add(Alakran4YTextBox)
    listAlakranTextBox.Add(Alakran5YTextBox)
    listAlakranTextBox.Add(Alakran6YTextBox)
    listAlakranTextBox.Add(Alakran7YTextBox)
    listAlakranTextBox.Add(Alakran8YTextBox)
    listAlakranTextBox.Add(Alakran9YTextBox)
    listAlakranTextBox.Add(Alakran10YTextBox)
    listAlakranTextBox.Add(Alakran1XTextBox)
    listAlakranTextBox.Add(Alakran2XTextBox)
    listAlakranTextBox.Add(Alakran3XTextBox)
    listAlakranTextBox.Add(Alakran4XTextBox)
    listAlakranTextBox.Add(Alakran5XTextBox)
    listAlakranTextBox.Add(Alakran6XTextBox)
    listAlakranTextBox.Add(Alakran7XTextBox)
    listAlakranTextBox.Add(Alakran8XTextBox)
    listAlakranTextBox.Add(Alakran9XTextBox)
    listAlakranTextBox.Add(Alakran10XTextBox)
用于每个句子:

For Each l As Label In listAlakranLabels
            l.Visible = True
        Next
        For Each l As TextBox In listAlakranTextBox
            l.Visible = True
        Next

您可以通过以下方式迭代表单(或容器)中
标签
文本框
的所有实例:

  • 首先声明一个控制变量来处理容器集合中的每个对象
  • 确定当前控件是否为标签
  • 将其可见性设置为false

    Dim lbl_holder as Control
    
    For each lbl_holder in Me.Controls
    
       If typeof lbl_holder is Label or Typeof lbl_holder is Textbox then
          lbl_holder.Visible = False
       End If
    
    Next
    
  • 您有两种选择:

    1.-将标签添加到
    列表中
    ,并为每个使用
    ,以设置其
    可见
    属性:

    Dim allLabels As List(Of Label) = New List(Of Label);
    
        allLabels.Add(Label4)
        allLabels.Add(Label5)
        allLabels.Add(AlakranLabel)
        ...
    
        For Each l As Label In allLabels
            l.Visible = True
        Next
    
    2.-如果要显示/隐藏容器内的所有标签,可以对每个
    容器
    控制
    集合,如下所示:

    If AlakranLabel.Visible = False Then
            For i As Integer = 0 To 20
                Label(i).visible = False
            Next
        Else
            For i As Integer = 0 To 20
                Label(i).visible = True
            Next
        End If
    
        For Each l As Label In Me.Controls.OfType(Of Label)
            l.Visible = True
        Next
    
    编辑

    您还有另一个选项,使用
    控件
    集合的
    查找
    方法:

    For i As Integer = 1 To 10
        Me.Controls.Find("Alakran" & i & "Label", False).FirstOrDefault().Visible = True
    Next
    

    这会将所有标签从
    Alakran1Label
    设置为
    Alakran10Label
    可见性设置为True

    不要忘记对帮助过你的答案进行投票,并接受你发现最有用的答案。当然,所有这些控件都在某种程度上是逻辑连接在一起的。分组在面板或分组框中。或者更好的方法是使用UserControl,这样您就可以将大量代码提升到另一个类中。所以只要设置面板的Visible属性。@HansPassant是最实际的答案,真的。我希望他能做到这一点,你提到的第一种方法,就是我所做的,而且效果很好。我将用解决方案编辑我的答案。谢谢你,皮科!