如何在不更改其子项ForeColor的情况下更改GroupBox文本的ForeColor?

时间:2016-06-13 15:21:00

标签: vb.net winforms groupbox

我想知道是否可以选择仅更改窗体中组框左上角的组框文本颜色,而不是组框内部的任何控件或标签。

我知道GroupBox.ForeColor = Color.Blue会将与该框相关联的所有文字更改为蓝色,但它也会更改ForeColor中标签和其他控件的GroupBox

如何更改组框文本的颜色而不更改其子颜色?

2 个答案:

答案 0 :(得分:4)

  

ForeColor属性是环境属性。环境属性是   控件属性,如果未设置,则从父级中检索   控制。

由于您没有为组框中的标签和文本框设置ForeColor,因此他们将使用其父级的ForeColor值。您可以使用以下任一选项解决此问题:

  1. Panel放入GroupBoxForeColor的{​​{1}}设置为GroupBox并设置Blue ForeColor } Panel显式使用设计器。然后将其他控件放在ControlText中。这样,您的控件将使用您明确设置的Panel ForeColor

  2. 自定义Panel的{​​{1}}:

    Paint

答案 1 :(得分:0)

只要我知道,所有子控件都将获取父控件的属性。

您可以存储所有子颜色,并在设置GroupBox的ForeColor后更改它们。您可以在每对Control / Color中使用Dictionary。

类似的东西:

Dim cColors As New Dictionary(Of Control, Color)

For Each ctrl As Control In GroupBox1.Controls
    cColors.Add(ctrl, ctrl.ForeColor)
Next

GroupBox1.ForeColor = Color.Blue

For Each ctrl As Control In GroupBox1.Controls
    If cColors.HasKey(ctrl) Then
        ctrl.ForeColor = cColors(ctrl)
    End If
Next

你可以把它放在方法中。

有关MSDN的财产的更多信息。