如何更改表单中所有标签的前景色?

How Do I Change ForeColor of all Labels in a Form?

我正在使用 Visual Basic .NET 中的 WinForms 编写一个简单的日程安排应用程序,我有这个 "Edit Preferences" 我希望用户能够更改所有标签的颜色。我尝试使用此代码:

Public Sub darkMode(ByVal darkModeOn As Boolean)
    If darkModeOn Then
        For Each c As Control In Me.Controls
            If c IsNot lblTitle Then
                If TypeOf c Is Label Then DirectCast(c, Label).ForeColor = Color.FromArgb(255, 255, 255)
            ElseIf TypeOf c Is Panel Then
                For Each pnlPanel As Panel In Me.Controls.OfType(Of Panel)()
                    pnlPanel.BackColor = Color.FromArgb(66, 66, 66)
                Next
            End If
        Next
End Sub

但是当我 运行 该代码时,它只会更改 LabelForeColor ,它们是表单的直接子项,并且更改不适用于 Labels 在其他容器内,如 Panels。有什么方法可以更改所有 LabelForeColor,即使那些不是 Form 的直接子代的 ForeColor

可能更改 If ElseIf 可以帮助您。

For Each c As Control In Me.Controls
        If TypeOf c Is Panel Then
            For Each pnlPanel As Panel In Me.Controls.OfType(Of Panel)()
                pnlPanel.BackColor = Color.FromArgb(66, 66, 66)
            Next
        ElseIf c IsNot lblTitle Then
            If TypeOf c Is Label Then DirectCast(c, Label).ForeColor = Color.FromArgb(255, 255, 255)
        End If
    Next