我可以让GroupBox ForeColor的行为与WinForms中的按钮相同吗?

我可以让GroupBox ForeColor的行为与WinForms中的按钮相同吗?,winforms,Winforms,我希望GroupBox标题和按钮标题上的文本具有相同的颜色,如果它们具有相同的前景色(以及其他设置类似的控件) GroupBox和几个按钮的ForeColor属性均设置为ControlText,但它们呈现为蓝色(GroupBox)和黑色(按钮)。假设这些与当前XP主题匹配。问题是如何设置这些控件或Winforms控件的属性,以使它们的行为一致并符合预期?或者它已经正确了,我误解了吗?这不是主题化的一般工作方式。它根据用户选择的主题覆盖控件的默认属性。一个更明显的例子是ProgressBar.Fo

我希望GroupBox标题和按钮标题上的文本具有相同的颜色,如果它们具有相同的前景色(以及其他设置类似的控件)


GroupBox和几个按钮的ForeColor属性均设置为ControlText,但它们呈现为蓝色(GroupBox)和黑色(按钮)。假设这些与当前XP主题匹配。问题是如何设置这些控件或Winforms控件的属性,以使它们的行为一致并符合预期?或者它已经正确了,我误解了吗?

这不是主题化的一般工作方式。它根据用户选择的主题覆盖控件的默认属性。一个更明显的例子是ProgressBar.ForeColor,无论你在设计器中选择什么颜色,它都将是Vista上的绿色脉冲条


Fwiw,当你试图克服这一点时,你会有相当多的痛苦。GroupBox.ForeColor是一个非常显著的例子。只有当你从不自己指定前景色时,它才会有主题颜色(顺便说一句,它是假的)。一旦你这么做了,你就再也不能重新设置它了。即使再次指定ControlText,也会得到黑色,而不是主题颜色。从Windows窗体中实现“环境属性”的方式来看,这是不可避免的。称之为bug并不是没有道理的。不修补它是避免此问题的最佳方法,您的用户不会抱怨。

如果我希望GroupBox和按钮具有默认(“ControlText”)前景色,并且希望它们具有相同的颜色,您是说我必须在代码中设置它们(在使用继承的默认值绘制它们之后)?我理解对了吗?因为如果我不修改它,GroupBox和Button的颜色是不同的,尽管默认的ForeColor.Re-iterating没有改变:它们是不同的,因为主题使它们不同。如果要覆盖用户首选项(O_O)并使其相同,则只需在构造函数中指定ForeColor属性。或者设计师通过改变它和改变它回来。当它以粗体显示时,您将得到实际的颜色。啊,因此,即使未更改(非粗体)的默认值是GroupBox.ForeColor=ControlText,Button.ForeColor=ControlText,这并不意味着ControlText==ControlText。但通过将其(粗体)设置为ControlText,则ControlText==ControlText。奇怪和意外的行为!(按照您所说的测试和工作)