繁体   English   中英

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

[英]Pass property name of controls to a function

我具有根据控件名称和输入命令更改控件属性的功能。

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

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

是。 这正是反射的作用。

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

然后设定你的价值

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM