vb.net - 如何更改 GroupBox 文本的前景色而不更改其子前景色?

标签 vb.net winforms groupbox

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

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

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

最佳答案

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 值。您可以使用以下任一选项解决此问题:

  1. GroupBox中放置一个Panel,将GroupBoxForeColor设置为蓝色 并使用设计器显式将 PanelForeColor 设置为 ControlText。然后将其他控件放入Panel中。这样,您的控件将使用您显式设置的 PanelForeColor

  2. 自定义GroupBoxPaint:

    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
    

关于vb.net - 如何更改 GroupBox 文本的前景色而不更改其子前景色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793517/

相关文章:

c# - 如何将按钮添加到 TabPage 的页眉?

winforms - C# Winforms : GroupBox not resizing

c++ - 向静态组合框控件添加单击/双击事件

c# - 更改组框的标题颜色而不是组框中的文本?

vba - 如何从 vb.net 脚本打开 Solidworks、运行宏和关闭 Solidworks?

vb.net - 对数字进行四舍五入但保留精确的数字

vb.net - 为学校项目 VB 创建一个简单的游戏

c# - 当其他控件获得焦点时隐藏表单

c# - 如何使用 C# 打印 PDF

mysql - 使用 dotnet String.Format 将数据保存到数据库失败