Перебрать все панели в форме - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу перебрать все панели в моей форме и установить свойство visible. Не могли бы вы сказать мне, где хранятся все панели?

Public Function ShowHide(PanelName As String)
    For Each sth As Panel In Form.Panels
        If sth.Name <> PanelName Then
            sth.visible = False
        Else
            sth.visible = True
        End If
    Next
End Function

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете использовать метод OfType() только для циклического прохождения элементов управления определенного типа:

Public Sub ShowHide(PanelName As String)
    For Each sth As Panel In Me.Controls.OfType(Of Panel)()
        If sth.Name = PanelName Then
            sth.Visible = True
        Else
            sth.Visible = False
        End If
    Next
End Sub

Или, если вы хотите сделать это в одну строку:

Public Sub ShowHide(PanelName As String)
    Me.Controls.OfType(Of Panel).ToList().ForEach(Sub(p) p.Visible = (p.Name = PanelName))
End Sub
0 голосов
/ 14 ноября 2018

Попробуйте это:

Public Sub ShowHide(PanelName As String)
    For Each sth As Control In Me.controls
        If TypeOf sth Is Panel Then
            If sth.Name <> PanelName Then
                sth.Visible = False
            Else
                sth.Visible = True
            End If
        End If
    Next
End Sub
...