Winforms 非活动控件背景色

Winforms 非活动控件背景色,winforms,disabled-control,Winforms,Disabled Control,Windows上是否有方法检索用作非活动控件背景色的颜色(TextBox等)?或者更好的是,边界颜色也一样 这是针对Windows窗体的,我在SystemColors中找不到任何合适的内容。没有这样的事 这是一个很好的例子。我有一个文本框,它可能不够大,无法容纳文本,因此被禁用。当它被禁用时,用户无法滚动查看整个文本,我甚至无法显示工具提示 因此,我现在所做的是将TextBox的ReadOnly属性设置为true,这允许我显示工具提示并使控件可滚动。客户端现在希望文本框看起来像已被禁用ReadO

Windows上是否有方法检索用作非活动控件背景色的颜色(
TextBox
等)?或者更好的是,边界颜色也一样

这是针对Windows窗体的,我在
SystemColors
中找不到任何合适的内容。没有这样的事

这是一个很好的例子。我有一个文本框,它可能不够大,无法容纳文本,因此被禁用。当它被禁用时,用户无法滚动查看整个文本,我甚至无法显示工具提示

因此,我现在所做的是将
TextBox
ReadOnly
属性设置为
true
,这允许我显示工具提示并使控件可滚动。客户端现在希望文本框看起来像已被禁用
ReadOnly
是一个非常讨厌的属性,因为它看起来仍然可以编辑。因此,我认为在那里加入适当的背景色可能足以愚弄大多数用户。我不能使用任意的灰度值,因为表单上还有其他禁用的控件,可能会注意到颜色差异。那么,有没有一种方法可以找出禁用控件是如何呈现的呢?背景色和边框色或者至少前者在这里应该足够了,但我不想猜测。有问题的平台很可能是XP和Vista,可能有主题,也可能没有主题


预计到达时间:忽略不计。这个问题是愚蠢的,是我应该早点发现的错误。一个单一的文本框不会附着在灰色背景上,这有点奇怪。

禁用时,文本框具有背景色
SystemColors。控件
和前景色
SystemColors。灰色文本

尝试以下操作:

        treeView1.EnabledChanged += (s, o) =>
            {
                treeView1.BackColor = treeView1.Enabled ? Color.White : SystemColors.Control;
            };

我认为,有“灰色”的文本框(如<代码>系统颜色>控件< /代码>)是不可编辑的,所以我不会真的认为这是个问题。但是如果客户这么说,那么客户也这么说。我不知道到底是哪一个格雷。他们仍然可以使用
ReadOnly=true
来聚焦控件,这一事实对他们来说可能并不明显。谢天谢地:-)我正要说同样的话。由于只读文本框与禁用的文本框具有相同的背景颜色,如果你问我,它们看起来确实是只读的。嗯,我是不是做错了什么?我们界面上的一个特定文本框仍然有白色背景。这正是客户抱怨的古怪之处。再试一次。也许设计师弄乱了一些财产分配单。哎哟。好啊设置特定的背景色将覆盖ReadOnly设置的背景色。即使在设置ReadOnly之前设置了背景色。当它发生时,背景色被设置为Window。