Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何动态更改对象属性_C#_Enums_Msagl - Fatal编程技术网

C#如何动态更改对象属性

C#如何动态更改对象属性,c#,enums,msagl,C#,Enums,Msagl,我正在阅读本教程 使用代码示例 我正在尝试使属性动态化(我希望以后能够从数据库加载属性) 我试过了 string dColor = "Red"; string dShape = "Diamond"; Microsoft.Glee.Drawing.Node n2 = graph.FindNode(strNode2); n2.Attr.Fillcolor = Microsoft.Glee.Drawing.Color.dColor; n2.Attr.Shape = Microsoft.Glee

我正在阅读本教程

使用代码示例

我正在尝试使属性动态化(我希望以后能够从数据库加载属性)

我试过了

string dColor = "Red"; 
string dShape = "Diamond";

Microsoft.Glee.Drawing.Node n2 = graph.FindNode(strNode2);
n2.Attr.Fillcolor = Microsoft.Glee.Drawing.Color.dColor;
n2.Attr.Shape = Microsoft.Glee.Drawing.Shape.dShape;
但它不起作用,我该怎么做,甚至读到关于动态地做这件事的文章

[回答] 我不确定这是否是最好的方法,但它是有效的

--我喜欢的颜色

using mColor = Microsoft.Msagl.Drawing.Color;
using sColor = System.Drawing.Color;

sColor c = sColor.FromName("Red");
graph.FindNode("test1").Attr.FillColor = new mColor(c.A,c.R,c.G,c.B);
--因为我做的形状

 graph.FindNode("test1").Attr.Shape = (Shape)
 (int)Enum.Parse(typeof(Shape),"Diamond");

其中“test1”、“diamond”和“Red”值来自数据库。

A
Color
不是
字符串

Microsoft.Glee.Drawing.Node n2 = graph.FindNode(strNode2);
var someColor = System.Drawing.Color.Red;
n2.Attr.Fillcolor = someColor;
如果要将颜色存储在数据库中,可以对颜色使用以下静态方法之一:

string dColor = "Red"; 
n2.Attr.Fillcolor = Color.FromName(dColor);
如果您不坚持指定的颜色,还有
Color.FromArgb(int)

编辑

看起来他们使用的颜色类别与System.Drawing中的不同。我在MSDN论坛上发现:

string color = "Red";
var cvtColor = new ColorConverter();
var sysColor = cvtColor.ConvertFromString(color);
n2.Attr.Fillcolor = new Microsoft.Msagl.Drawing.Color(sysColor.R, sysColor.B, sysColor.G);
有一些:


我收到一个错误:CS0029无法将类型“System.Drawing.Color”隐式转换为“Microsoft.Msagl.Drawing.Color”。我希望您有一个IDE,可以轻松发现此
Microsoft.Msagl.Drawing.Color
的工作原理。如果没有,可以使用ILSpy或dotPeek。我已经更新了我的答案。
n2.Attr.Fillcolor = Microsoft.Msagl.Drawing.Color.Magenta;