C# 在循环中添加控件(Picturebox)

C# 在循环中添加控件(Picturebox),c#,C#,我拥有的:表格上的大图片盒(我们称之为Pic_Map)。一类Ore.cs,一类矿石清单和一个数据库,该数据库提取数据并将其放入列表中 功能性:因此,它的功能是我有一个文本框/组合框和一个按钮。当我按下按钮时,它将在ores列表中循环,并根据与数据相等的TexBox/ComboBox(在本例中为oreu名称)在picu地图的顶部动态添加图片框 问题:这一切都很好,但问题是,当我动态添加PictureBoxes时,它似乎只添加列表上的最后一个值(picu地图上的红色圆圈)。因此,它最终只显示1个Pi

我拥有的:表格上的大图片盒(我们称之为Pic_Map)。一类
Ore.cs
,一类
矿石清单
和一个数据库,该数据库提取数据并将其放入
列表中

功能性:因此,它的功能是我有一个文本框/组合框和一个按钮。当我按下按钮时,它将在
ores
列表中循环,并根据与数据相等的TexBox/ComboBox(在本例中为oreu名称)在picu地图的顶部动态添加图片框

问题:这一切都很好,但问题是,当我动态添加PictureBoxes时,它似乎只添加
列表上的最后一个值(picu地图上的红色圆圈)。因此,它最终只显示1个PictureBox,而不是3个,因为我有3个与TextBox/ComboBox匹配的值名

问题:如何让它像我写/选择“Flame Stone”时一样工作,它会查看名称中包含“Flame Stone”的所有数据并添加它(而不是只添加列表中的最后一个值)

代码:

private void PopulateComboBoxByName()
    {
        PictureBox ore_Area = new PictureBox(); 

        db.GetOre(); //Getting data and putting it into "ores" list

        foreach (Ore ore in db.ores)
        {
            if (CBOX_Filter.SelectedItem.ToString() == ore.Ore_Name)
            {
                int area_Width = Convert.ToInt32(ore.Area_Width);
                int area_Height = Convert.ToInt32(ore.Area_Height);

                int ore_Width = Convert.ToInt32(ore.Ore_Width);
                int ore_Height = Convert.ToInt32(ore.Ore_Height) - area_Height / 2;
                ore_Area.Name = "ore_Area";

                ore_Area.ImageLocation = @"Data\Images\Circle.png";
                ore_Area.SizeMode = PictureBoxSizeMode.StretchImage;

                ore_Area.Size = new Size(Convert.ToInt32(area_Width), Convert.ToInt32(area_Height));
                ore_Area.Location = new Point(Convert.ToInt32(ore_Width), Convert.ToInt32(ore_Height));
                ore_Area.BackColor = Color.Transparent;

                this.Controls.Add(ore_Area);
            }
        }

        ore_Area.Parent = PIC_Map;
    }
图像:

数据:

地图:
多亏了LarsTech,它已经被修复了


使picturebox在循环内移动,
this.controls.add
更改为
PIC\u Map.controls.add
Ore\u Area.Parent=PIC\u Map已删除。

位置是否始终相同?是的,基本上“图像宽度”和“图像高度”是表单放置图片框的坐标。因此,位置等可以是相同的,这无关紧要。您只创建了一个PictureBox,但它执行foreach循环,或者这不算数?如何修复它,使其添加所有PictureBox?您正在循环之前制作一个PictureBox。将该线移动到循环内部。移除
ore\u区域.Parent=PIC\u地图行。更改
this.Controls.Add
PIC\u地图.Controls.Add