如果要對某一群名稱相似的物件做一系列的處理
或是對某些在程式執行期間產生的元件進行指定的操作
可能就會遇到不知道怎麼在程式碼中呼叫該原件來操作
此時可以用Controls的方式來呼叫該元件
範例如下:
(Unit_Type)this.Controls["Unit_Nmae"]
Unit_Type:該元件的Type
Unit_Nmae:該元件的名稱(也可以透過變數來帶入)
其中this一般是指Main Form(也就是預設常用的Form1)
當然如果想要操作的元件是建立在panel這類的容器內的話
就必須加入容器的名稱才能正確呼叫
例如:
(Unit_Type)this.panel1.Controls["Unit_Nmae"]
實用上,我習慣在敘述的最外層用括號包住再呼叫方法(Method)
避免模糊的敘述造成無法正確的轉型
而發生無法呼叫正確方法來做操作的情形
如下:
((Unit_Type)this.panel1.Controls["Unit_Nmae"]).Method
對我而言
這個方式我一般用在對某一群名稱相似的物件做一系列的處理時
通常我會透過這個方式
將該一系列的元件加入陣列
以方便後續的運算或操作
範例如下:
1: PictureBox[,] Player_pic = new PictureBox[4, 52];
2: int i = 1;
3:
4: foreach (Control ctrl in this.panel1.Controls)
5: {
6: string Position_Name = "";
7: if (ctrl is PictureBox)
8: {
9: Position_Name = "P1_C" + i.ToString("00");
10: Player_pic[0, i - 1] = (PictureBox)this.panel1.Controls[Position_Name];
11: i++;
12: }
13: }
透過上述的方式
可將一系列在panel1中的PictureBox(名稱為P1_C01、P1_C02、P1_C03......)
加入一個PictureBox的陣列
往後如果有需要對這個系列的元件做操作
只需要直接呼叫該陣列對應的位置就OK啦~~
全站熱搜
留言列表