2011-07-20 46 views
0

当我禁用VS2008 Winforms项目中的某些按钮控件时,出现了一些不一致的行为。Winforms控件 - 当Enabled = false时为什么文本不会灰色?

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

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

似乎更容易发生如果按钮被放置在一个GroupBox,但我不知道这总是如此。

我猜测Button和/或包含它的Form或GroupBox的某些属性组合导致了这一点,但我看不到任何合理的模式。

编辑:我们有我们自己的外观和感觉,并将含有表单的BackColor设置为不同的颜色。

任何人都可以解释为什么这可能会发生?

+0

你可以发送一些示例项目,这个问题在哪里?我无法重现此行为。 – TcKs

+0

我可以试试。我将如何将它发送给你? –

+0

明显的修复方法是使用默认的系统主题。它们总是可以正确绘画,它们可以由用户自定义,并且对用户来说很舒服/熟悉。手动改变颜色从来没有任何借口。 –

回答

-1

问题是因为表单的BackColor被设置为不同的颜色。

一些谷歌搜索显示,许多其他人都遇到过这种情况。提出的解决方案是非常复杂的 - 继承自己的按钮控件和压倒一切的OnPaint等

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

当您添加的按钮到窗体,按钮的背景色属性将设置为与窗体的BackColor相同的值,虽然它不会在设计或运行时以这种方式显示而不是

如果设置按钮的背景色属性为系统 - > ControlLight,它会解决这个问题 - 残疾人按钮现在看起来禁用。

请注意,重置BackColor时会出现一个奇怪的怪癖 - UseVisualStyleBackColor属性将从True更改为False。但是这似乎没有效果,并且可以在不影响外观的情况下改回True。

相关问题