我该如何在app.config中指定颜色,并在运行时将其转换为实际的System.Drawing.Color对象?
请看ColorTranslator。您可以指定一个颜色,比如在appSettings中,并使用ColorTranslator将其转换为实际的颜色。特别是我发现.FromHtml()方法非常有用。
颜色
是一个奇怪的现象;常规的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
您的配置应该如下所示:
<add key="SomethingsColor" value="Black" />
你可以将其转换为颜色:
Color myColor = Color.FromName(ConfigurationManager.AppSettings["KEY"]);
private ColorInt
public Color shapeColor
{
get {
return Color.FromArgb(ColorInt);
}
set
{
ColorInt = value.toargb()
}
}
我写了这篇文章,讲述了在ASP.NET中自定义配置节的方法...但是原理(以及代码)同样适用于"app.config"(非Web应用程序)。但如果你认为这太麻烦了,那么你可以像其他人提到的那样直接转换字符串。