如果要對某一群名稱相似的物件做一系列的處理

或是對某些在程式執行期間產生的元件進行指定的操作

可能就會遇到不知道怎麼在程式碼中呼叫該原件來操作

此時可以用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啦~~

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 酸酸 的頭像
    酸酸

    酸酸的Coding Style

    酸酸 發表在 痞客邦 留言(0) 人氣()