簡體   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