我有基于控件名和输入命令更改控件属性的函数。
public void SetControl(string ControlName, string Operation)
{
Control Control = this.Controls.Find(ControlName, true)[0];
switch (Operation)
{
case "ok":
Control.BackColor = Color.Green;
Control.ForeColor = Color.Black;
break;
case "error":
Control.BackColor = Color.Red;
Control.ForeColor = Color.Blue;
break;
}
}
现在我想知道是否有办法传递属性名称?当然我可以做这样的事情:
if (propertyname=="ForeColor")
{Control.ForeColor = Color.Black;}
但是我应该为我要改变的所有属性执行此操作!无论如何根据其名称查找和更改属性?
答案 0 :(得分:4)
是。这正是反思的作用。
var value = Control.GetType().GetProperty(propertyname).GetValue(Control, null);
然后设置你的值
Control.GetType().GetProperty(propertyname).SetValue(Control, valueToSet);