如何在不更改其子 ForeColor 的情况下更改 GroupBox 文本的 ForeColor?
How can I change the ForeColor of the GroupBox text without changing its children ForeColor?
我想知道是否有一个选项可以只更改 windows 表单中组框左上角的组框文本的颜色,而不是组内的任何控件或标签盒子。
我知道 GroupBox.ForeColor = Color.Blue
会将与该框关联的所有文本更改为蓝色,但它也会更改 GroupBox
中标签和其他控件的 ForeColor
。
如何在不更改其子级前景色的情况下更改组框文本的颜色?
据我所知,所有的子控件都会占用父控件的属性。
您可以存储所有子颜色并在设置 GroupBox 的 ForeColor 后更改它们。您可以对每对 Control/Color 使用字典。
类似于:
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。
The ForeColor
property is an ambient property. An ambient property is
a control property that, if not set, is retrieved from the parent
control.
由于您没有为分组框中的标签和文本框设置 ForeColor
,它们将使用其父项的 ForeColor
值。您可以使用以下任一选项解决此问题:
在GroupBox
中放一个Panel
将GroupBox
的ForeColor
设置为Blue
并设置ForeColor
的Panel
到 ControlText
明确使用设计器。然后把其他控件放在Panel
中。这样,您的控件将使用您明确设置的 ForeColor
of Panel
。
自定义 Paint
of GroupBox
:
Private Sub GroupBox1_Paint(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.PaintEventArgs) Handles GroupBox1.Paint
e.Graphics.Clear(Me.GroupBox1.BackColor)
GroupBoxRenderer.DrawGroupBox(e.Graphics, Me.GroupBox1.ClientRectangle, _
Me.GroupBox1.Text, Me.GroupBox1.Font, Color.Blue, _
System.Windows.Forms.VisualStyles.GroupBoxState.Normal)
End Sub
我想知道是否有一个选项可以只更改 windows 表单中组框左上角的组框文本的颜色,而不是组内的任何控件或标签盒子。
我知道 GroupBox.ForeColor = Color.Blue
会将与该框关联的所有文本更改为蓝色,但它也会更改 GroupBox
中标签和其他控件的 ForeColor
。
如何在不更改其子级前景色的情况下更改组框文本的颜色?
据我所知,所有的子控件都会占用父控件的属性。
您可以存储所有子颜色并在设置 GroupBox 的 ForeColor 后更改它们。您可以对每对 Control/Color 使用字典。
类似于:
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。
The
ForeColor
property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control.
由于您没有为分组框中的标签和文本框设置 ForeColor
,它们将使用其父项的 ForeColor
值。您可以使用以下任一选项解决此问题:
在
GroupBox
中放一个Panel
将GroupBox
的ForeColor
设置为Blue
并设置ForeColor
的Panel
到ControlText
明确使用设计器。然后把其他控件放在Panel
中。这样,您的控件将使用您明确设置的ForeColor
ofPanel
。自定义
Paint
ofGroupBox
:Private Sub GroupBox1_Paint(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) Handles GroupBox1.Paint e.Graphics.Clear(Me.GroupBox1.BackColor) GroupBoxRenderer.DrawGroupBox(e.Graphics, Me.GroupBox1.ClientRectangle, _ Me.GroupBox1.Text, Me.GroupBox1.Font, Color.Blue, _ System.Windows.Forms.VisualStyles.GroupBoxState.Normal) End Sub