SystemColors与ProfessionalColors

时间:2013-12-06 16:38:21

标签: .net winforms

过去,只要我在Windows开发中需要Windows Color,我就会从SystemColors Class中选择System.Windows,这是Intellisense命名空间的一部分。

今天,纯粹是错误的,我在输入Pr后点击 TAB 键,期待Process完成繁重的工作并选择System.Diagnostics(来自我的ProfessionalColors命名空间。

我曾经主演过以前从未注意过的事情:System.Windows.Forms

我在MSDN上探索了 ProfessionalColors Class 一段时间,我很快发现它是{{3}}命名空间的一部分,但我无法看到更多。那是我查找 SystemColors 以查看它与众不同的地方。

没有什么事情发生在我身上。 ProfessionalColors 似乎没有在 SystemColors 上添加任何功能。

我认为System.Windows可以提供更多System.Windows.Forms无法显示的颜色(反之亦然),但我无法通过搜索或想象确定窗口使用的颜色。不属于Windows窗体的颜色。

有没有人对这两种颜色类别有所了解?

为什么有两个单独的类,它们之间有什么区别?

2 个答案:

答案 0 :(得分:3)

它们的主要用途是绘制ToolStrip容器和控件。

请参阅How to: Customize Colors in ToolStrip Applications

答案 1 :(得分:2)

可用的不同预定义颜色集合中的一部分,似乎ProfessionalColors的静态构造函数订阅了UserPreferenceChanged事件。还有一个内部表,可以保留所有颜色,而不是为每个调用构建一个新颜色。

static ProfessionalColors()
{
    SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(ProfessionalColors.OnUserPreferenceChanged);
    SetScheme();
}

这是在ProfessionalColor中返回MenuBorder的代码

public static Color MenuBorder
{
    get
    {
        return ColorTable.MenuBorder;
    }
}

虽然这是SystemColor中的WindowText代码

public static Color WindowText
{
    get
    {
        return new Color(KnownColor.WindowText);
    }
}