【问题标题】:Inactive control background color非活动控件背景颜色
【发布时间】:2009-12-10 16:39:29
【问题描述】:

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

这是针对 Windows 窗体的,我无法在 SystemColors 中找到任何合适的内容。没有这种东西

举个例子。我有一个文本框,它可能不足以容纳它所包含的文本并且它被禁用。当它被禁用时,用户无法滚动查看整个文本,我什至无法显示工具提示 for obvious reasons

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

预计到达时间:无视。这个问题很愚蠢,代表我的错误我应该早点发现。单个 TextBox 不符合灰色背景,这有点奇怪。

【问题讨论】:

  • 我认为带有“灰色”的文本框(如SystemColors.Control)是不可编辑的,所以我不会认为这是一个问题。但如果客户这么说,那么客户这么说。
  • 好吧,我不知道哪个是灰色的。他们仍然可以使用ReadOnly = true 集中控制这一事实可能对他们来说是不明显的。谢天谢地:-)
  • 我正要说同样的话。由于只读文本框与禁用文本框具有相同的背景颜色,因此如果您问我,它们看起来确实是只读的。
  • 嗯,我做错了什么吗?我们界面上的一个特定文本框仍然有 white 背景。那是客户抱怨的怪事。再试一次。可能是设计师搞砸了一些属性分配顺序。
  • 哎哟。行。设置特定的背景颜色会覆盖 ReadOnly 设置的背景颜色。即使设置了背景颜色 before ReadOnly 设置。碰巧的是,背景颜色设置为 Window。

标签: winforms disabled-control


【解决方案1】:

禁用时,文本框的背景色为SystemColors.Control,前景色为SystemColors.GrayText

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2015-02-19
      相关资源
      最近更新 更多