[英]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.