禁用文本的系统颜色是什么?

23

我有一个控件,没有文本禁用/启用的支持,因此我需要将其构建到控件中。

问题很简单:如果我想选择正确的系统颜色,使得该控件的禁用文本与旁边的禁用标签具有相同的颜色,我应该选择哪个系统颜色?我尝试了几种颜色,但似乎都不对,它们要么太浅,要么太暗。

换句话说,如果ForeColor属性存在,我应该在这里写什么:

myDefunctLabel.ForeColor = SystemColors.???;

1
禁用的文本不是有某种阴影效果,因此不止一种颜色吗?至少我记得在早期版本的Windows中是这样的。 - CodesInChaos
我这里没有类似的东西。无论如何,这比旧的“默认”要好一些,因为禁用的控件仍会显示为纯黑色。我会继续研究并在更多的计算机上测试,但我会先从Adam的答案ControlDark开始。 - Lasse V. Karlsen
如果 SystemColors.GrayText 不是您期望的颜色,那是因为您当前的主题定义了不同的颜色。请参阅 http://blogs.msdn.com/b/wpf/archive/2010/11/30/systemcolors-reference.aspx。 - AMissico
4个回答

19

SystemColors.ControlDark在我的屏幕上看起来不错。我亲自尝试了它们中的大部分,其他的阴影都不对。

但是根据文档,GrayText是你需要的颜色。请注意,我在启用Aero的Windows 7上尝试了我的样本,不确定屏幕主题是否会对着色产生干扰。


我同意ControlDarkGrayText更好 - 在禁用Aero(基本主题)的Windows 7上。 - MarkJ

10

嗯,这意味着某个地方有东西覆盖了它。那个颜色比附近的禁用标签略暗。但我会坚持使用它,并找出为什么我的标签比它们更浅 :) - Lasse V. Karlsen
SystemColors.ControlDark 对我来说可行,我尝试了 GrayText 但它看起来不太对。这并不是说它不是正确的答案,只是颜色看起来不同。 - Adam Houldsworth
根据Paint.NET中的颜色选择器,ControlDark与每个像素的禁用状态相同。不过MSDN文档并未支持此说法。 - Adam Houldsworth
它在我的屏幕上看起来没问题。这可能表明我应该将此问题关闭为过于局部,但无论如何。我不喜欢管理自己的内容,所以如果您同意,也许需要一个标记。 - Lasse V. Karlsen
这个答案根据文档是正确的 - 只是如果你使用这种颜色,你的控件将不会与使用不同颜色的Windows控件相匹配。 - MarkJ

4

应该使用System.Drawing.SystemColors.GrayText。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接