我想知道是否可以选择仅更改窗体中组框左上角的组框文本颜色,而不是组框内部的任何控件或标签。
我知道GroupBox.ForeColor = Color.Blue
会将与该框相关联的所有文字更改为蓝色,但它也会更改ForeColor
中标签和其他控件的GroupBox
。
如何更改组框文本的颜色而不更改其子颜色?
答案 0 :(得分:4)
ForeColor
属性是环境属性。环境属性是 控件属性,如果未设置,则从父级中检索 控制。
由于您没有为组框中的标签和文本框设置ForeColor
,因此他们将使用其父级的ForeColor
值。您可以使用以下任一选项解决此问题:
将Panel
放入GroupBox
将ForeColor
的{{1}}设置为GroupBox
并设置Blue
ForeColor
} Panel
显式使用设计器。然后将其他控件放在ControlText
中。这样,您的控件将使用您明确设置的Panel
ForeColor
。
自定义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的财产的更多信息。