2010-08-11 228 views
1

我想知道如何選擇在程序運行時創建的對象。 每個對象都有其唯一的名稱。我怎麼能通過它的名字選擇那個對象?按名稱查找對象

實例名稱:

「mapPart_0_0」
「mapPart_0_1」
「mapPart_0_2」

這是一個Windows窗體項目。在C#中。

這些對象的創建:

private void addBoxes() 
    { 
     for (int a = 0; a < 25; a++) 
     { 
      for (int b = 0; b < 10; b++) 
      { 
       MyCustomPictureBox box = new MyCustomPictureBox(); 
       box.Location = new Point(b * 23 + 5, a * 23 + 5); 
       box.Image = new System.Drawing.Bitmap("tiles/0.png"); 
       box.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
       box.Size = new Size(24, 24); 
       box.Name = "mapPart_" + a + "_" + b; 
       box.Click += new EventHandler(boxClickAdd); 
       box.oFile = "0"; 
       panel1.Controls.Add(box); 
      } 
     } 
    } 
+0

你可以發表如何創建這些對象的示例代碼? – Oded 2010-08-11 07:41:01

回答

5

我建議乾脆把對象在System.Collections.Generic.Dictionary<string, your object type>列表。如果我正確理解問題,它提供了您正在尋求的確切功能。

+0

我同意Mathias。只需將動態創建的對象添加到Dictionary中即可。 您可以使用Reflection,但這可能會導致不可接受的運行時損失(並且C#中的反射可能很冗長)。 – 2010-08-11 07:50:06