将控件的属性名称传递给函数

时间:2014-07-02 17:32:11

标签: c# function properties controls

我有基于控件名和输入命令更改控件属性的函数。

 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;}

但是我应该为我要改变的所有属性执行此操作!无论如何根据其名称查找和更改属性?

1 个答案:

答案 0 :(得分:4)

是。这正是反思的作用。

var value = Control.GetType().GetProperty(propertyname).GetValue(Control, null);

然后设置你的值

Control.GetType().GetProperty(propertyname).SetValue(Control, valueToSet);