我是如何在WinForm应用程序中实现应用程序范围的颜色代码的?

Bra*_*ann 5 .net colors skinning winforms

我正在构建一个WinForms应用程序,我在大多数控件上使用特定的颜色.我有时从WinForms设计师那里做,有时直接进入我的代码.

我有一个静态类看起来像这样:

 public static class MyColors
    {
        public static Color DarkGreen = Color.FromArgb(0, 70, 62);
        ...
        public static Color Orange = Color.FromArgb(239, 132, 16);

    }
Run Code Online (Sandbox Code Playgroud)

我可以很容易地在代码中使用这些颜色,但是设计师无法做到这一点,这会引发这个错误:

MyColors.DarkGreen不是Int32的有效值.

(我试图存储这些颜色的Int32表示,但是失败并出现相同的错误)

我现在使用的解决方案是在设计器中使用rgb颜色代码,在我的代码中使用MyColors类值,并且我正在使用Visual Studio的替换所有功能进行更改.这不是一个好的解决方案,但到目前为止我还没有找到更好的想法.

有任何想法吗 ?


注意:我知道这个问题,与我的略有不同,因为我不打算改变"KnownColors".

Jef*_*tes 2

要获得设计人员对其他颜色定义的支持,您可能需要创建自己的编辑器来扩展或替换编辑Color器。定义这些属性后,您需要通过将属性应用于Editor受影响的属性来告诉设计者哪些属性应该使用您的编辑器。

您也可以通过使用 aTypeConverter和 the执行类似的操作来取得一些成功TypeConverterAttribute