2008-11-03 71 views

回答

2

Color是一個古怪的;常規XML序列化工作不正常 - 因此你經常需要添加自己的代碼,可能通過TypeConverter

static void Main() 
{ 

    Test(Color.Red); 
    Test(Color.FromArgb(34,125,75)); 
} 
static void Test(Color color) 
{ 
    TypeConverter converter = TypeDescriptor.GetConverter(typeof(Color)); 
    string s = converter.ConvertToInvariantString(color); 
    Console.WriteLine("String: " + s); 
    Color c = (Color) converter.ConvertFromInvariantString(s); 
    Console.WriteLine("Color: " + c); 
    Console.WriteLine("Are equal: " + (c == color)); 
} 

輸出:

String: Red 
Color: Color [Red] 
Are equal: True 
String: 34, 125, 75 
Color: Color [A=255, R=34, G=125, B=75] 
Are equal: True 
0

我寫this article關於ASP自定義配置部分。 NET ...但主體(和代碼)是相同的「app.config」(非網絡應用程序)。但是,如果這對你來說太過分了,那麼你可以像其他人提到的那樣轉換字符串。

2

你的配置是這樣的:

<add key="SomethingsColor" value="Black" /> 

,你可以將其轉換爲一種顏色:

Color myColor = Color.FromName(ConfigurationManager.AppSettings["KEY"]); 
0

你可以只保存顏色爲int值,它可以被序列化,並添加一個使用toArgb和來自argb的color類型的屬性來轉換它。

例如

private ColorInt 

public Color shapeColor 
{ 
    get { 
     return Color.FromArgb(ColorInt); 
    } 
     set 
    { 
     ColorInt = value.toargb() 
    } 
} 
2

看看ColorTranslator。您可以指定顏色,例如在appSettings中使用ColorTranslator將其轉換爲真實顏色。特別是我發現.FromHtml()方法非常有用。

+0

對於ColorTranslator.FromHtml爲+1。 – Joe 2008-11-03 13:05:31

相關問題