2012-03-30 94 views
0

我已經在窗體中生成了8 * 16的橢圓形。代碼是:列表中的訪問元素

for (int i = 0; i < 16; i++) 
{ 
    for (int j = 0; j < 8; j++) 
    { 
     OvalShape ovl = new OvalShape(); 
     ovl.Width = 20; 
     ovl.Height = 20; 
     ovl.FillStyle = FillStyle.Solid; 
     ovl.FillColor = Color.Transparent; 
     ovl.Name = "oval" + j + "" + i; 

     ovl.Location = new Point((ovl.Width * i) * 2, (ovl.Height * j) * 2); 

     ovalShape.Add(ovl); 
    } 
} 

foreach (OvalShape os in ovalShape) 
{ 
    Microsoft.VisualBasic.PowerPacks.ShapeContainer shapeContainer = 
          new Microsoft.VisualBasic.PowerPacks.ShapeContainer(); 
    os.Parent = shapeContainer; 
    this.Controls.Add(shapeContainer); 
} 

現在我想以不同方式訪問每個橢圓形。我怎麼能這樣做?

+0

「ovalShape」變量是什麼類型? – Oded 2012-03-30 09:05:36

+6

請解釋'你想要以不同的方式訪問每個橢圓形'' – 2012-03-30 09:05:58

+0

@Oded:'列表'我猜想。 「ovalShapes」本來是個更好的名字。 – markmuetz 2012-03-30 09:07:48

回答

1

由於ovalShape是一個List<OvalShape>,您可以使用索引來訪問任何一個項目:

foreach (OvalShape os in ovalShape) 
{ 
    //... 
} 

否則

var anOval = ovalShape[0]; 
0

您已經訪問在ovalShape不同每個ovalshape在foreach循環您也可以通過它的索引訪問每個橢圓形,如

var newOvalShape = ovalShape[0]; 
0

你已經命名你的控制器,如ovl.Name =「oval」+ j +「」+ i;

所以,我覺得你可以創建dictrionary像Dictionary<string , OvalShape> dic

然後你可以將它像

//... 
ovl.Name = "oval" + j + "" + i; 
dic.add(ovl.Name , ovl); 
//... 

然後,您可以訪問其他的方法這本字典,並通過其名稱訪問它。

+0

我添加了一個新的字典,正如你所說的。 – 2012-03-30 11:22:29

+0

我正在使用 Dictionary dic = new Dictionary (); 但那又如何?我還沒有訪問/ – 2012-03-30 11:23:27