2012-03-30 17 views
0

フォームに8 * 16のovalshapeを生成しました。コードは次のとおりです:リスト内の要素にアクセスする

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); 
} 

今、私はそれぞれのovalshapeに別々にアクセスしたいと思います。どうすればこのことができますか?

+0

'ovalShape'変数はどのような型ですか? – Oded

+6

「私はそれぞれの楕円形へのアクセスを別々にしたい」という意味を説明してください。 –

+0

@Oded: 'List '私は推測しています。 'ovalShapes'はより良い名前でした。 – markmuetz

答えて

1

ovalShapeList<OvalShape>あるので、あなたがいずれかの項目にアクセスするためにインデクサーを使用することができます。

var anOval = ovalShape[0]; 
0

あなたはすでにあなたがそうでなければ、あなたのforeachループで異なるovalShape

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

を各ovalshapeにアクセスしていますそのインデックスによって各楕円形にアクセスすることもできます。

var newOvalShape = ovalShape[0]; 
0

あなたはすでにovl.Name = "oval" + j + "" + iのようにあなたの名前を付けました。

だから、私はあなたが次に

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

のようにそれを設定することができます次に、あなたは他の方法でこの辞書にアクセスし、その名前でアクセスすることができますDictionary<string , OvalShape> dic

ようdictrionary作成することができると思います。

+0

あなたが言ったように新しい辞書を追加しました。 –

+0

私は使用しています 辞書<文字列、OvalShape> dic =新しい辞書<文字列、OvalShape>(); しかし、それでは?私はまだアクセスしていない/ –

関連する問題