Я хочу перебрать все панели в моей форме и установить свойство 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





Попробуй это:
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
Вы можете использовать метод 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