Winforms控件-为什么启用=false时文本不变灰?

Winforms控件-为什么启用=false时文本不变灰?,winforms,visual-studio-2008,button,Winforms,Visual Studio 2008,Button,当我在VS2008 Winforms项目中禁用某些按钮控件时,会出现一些不一致的行为 当我设置Enabled=false时,按钮被禁用,但某些按钮(尽管不是所有按钮)的文本保持黑色 我希望所有按钮在禁用时都显示灰色文本-这使用户更容易看到按钮被禁用 如果按钮放在GroupBox中,似乎更可能发生这种情况,但我不确定是否总是这样 我猜是按钮属性和/或包含它的表单或GroupBox属性的某些组合导致了这种情况,但我看不到任何有意义的模式 编辑:我们有自己的外观和感觉,并且正在将包含表单的背景色设置为

当我在VS2008 Winforms项目中禁用某些按钮控件时,会出现一些不一致的行为

当我设置Enabled=false时,按钮被禁用,但某些按钮(尽管不是所有按钮)的文本保持黑色

我希望所有按钮在禁用时都显示灰色文本-这使用户更容易看到按钮被禁用

如果按钮放在GroupBox中,似乎更可能发生这种情况,但我不确定是否总是这样

我猜是按钮属性和/或包含它的表单或GroupBox属性的某些组合导致了这种情况,但我看不到任何有意义的模式

编辑:我们有自己的外观和感觉,并且正在将包含表单的背景色设置为不同的颜色


有人能解释为什么会发生这种情况吗?

问题是因为表单的背景色设置为不同的颜色

一些谷歌用户透露,许多其他人也遇到过这种情况。建议的解决方案非常复杂——将自己的按钮控件子类化,覆盖OnPaint等

但事实证明有一个简单的解决办法

将按钮添加到表单时,按钮的BackColor属性将设置为与表单的BackColor相同的值,尽管在设计或运行时都不会以这种方式显示

如果您将按钮的BackColor属性设置为System->ControlLight,它将解决问题-禁用的按钮现在看起来已禁用


请注意,重置BackColor时有一个奇怪的怪癖-UseVisualStyleBackColor属性将从True更改为False。但这似乎没有任何效果,可以更改回True,而不会以任何方式影响外观。

能否发送一些示例项目,问题在哪里?我不能复制这种行为,我可以试试。我将如何发送给您?显而易见的解决方案是使用默认的系统主题。它们总是正确地绘制,用户可以自定义,并且用户感到舒适/熟悉。手动更改颜色从来没有任何借口。@Cody-提供更多信息作为答案,我会投票支持你。虽然我从你的个人资料中看到你并不真的需要销售代表,而且你对系统主题有一点偏见…@Tom:是的,99%的用户都有这种偏见。我喜欢系统主题的原因是因为它们能自动解决这样的问题。请记住,定制应用程序中的一些颜色,而将其他颜色留给系统主题,这很少是一个好主意。如果我设置了一个高对比度的主题,那么这些颜色很可能与您的自定义颜色冲突,使您的应用程序无法使用。正如您在这里所观察到的,用户期望各种各样的东西,比如禁用的按钮呈现灰色外观,而过多的自定义可能/确实会干扰这一点。