NES*_*HOM 0 c# controls properties 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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否还有什么方法可以传递属性名称?当然我可以做这样的事情:
if (propertyname=="ForeColor")
{Control.ForeColor = Color.Black;}
Run Code Online (Sandbox Code Playgroud)
但我应该对我要更改的所有属性执行此操作!有没有办法根据名称查找并更改属性?
是的。这正是反射的作用。
var value = Control.GetType().GetProperty(propertyname).GetValue(Control, null);
Run Code Online (Sandbox Code Playgroud)
然后设置你的值
Control.GetType().GetProperty(propertyname).SetValue(Control, valueToSet);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |