Winforms控件 - 当Enabled = false时,为什么Text不变为灰色?

时间:2011-07-20 18:34:34

标签: winforms visual-studio-2008 button

当我在VS2008 Winforms项目中禁用某些Button控件时,我遇到了一些不一致的行为。

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

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

如果将按钮放在GroupBox中,似乎更有可能发生,但我不确定是否总是如此。

我猜测Button的某些属性组合,和/或包含它的Form或GroupBox的属性组合都会导致这种情况,但我看不出任何有意义的模式。

编辑:我们拥有自己的外观,并将包含表格的BackColor设置为不同的颜色。

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:-1)

问题是因为Form的BackColor设置为不同的颜色。

一些谷歌搜索透露,其他许多人都遇到过这种情况。提出的解决方案非常复杂 - 继承自己的按钮控件并覆盖OnPaint等。

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

当您将按钮添加到表单时,按钮的BackColor属性将设置为与Form的BackColor相同的值,尽管会在设计或运行时以这种方式显示。< / p>

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

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