我在一个表单中生成了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);
}
现在我希望以不同方式访问每个ovals形状。我怎么能这样做?
答案 0 :(得分:1)
由于ovalShape
是List<OvalShape>
,您可以使用索引器访问任何一个项目:
var anOval = ovalShape[0];
答案 1 :(得分:0)
您已经ovalShape
循环访问foreach
中的每个ovals形状
foreach (OvalShape os in ovalShape)
{
//...
}
否则你也可以通过它的索引访问每个ovalshape,如
var newOvalShape = ovalShape[0];
答案 2 :(得分:0)
你已经将你的控制命名为ovl.Name =“oval”+ j +“”+ i;
所以,我认为你可以创建像Dictionary<string , OvalShape> dic
然后您可以将其设置为
//...
ovl.Name = "oval" + j + "" + i;
dic.add(ovl.Name , ovl);
//...
然后,您可以在其他方法中访问此字典,并通过其名称访问它。