[英]add controls (Picturebox) in loop
我所拥有的:窗体上的Big PictureBox(称为Pic_Map)。 一个Ore.cs
类,一个List<Ore> ores;
还有一个数据库,用于提取数据并将其放入ores
列表。
功能性:因此,此功能是我有一个TextBox / Combobox和一个Button。 当我按下按钮时,它将循环浏览ores
列表,并根据TexBox / ComboBox等于数据(在此情况下为Ore_Name)在Pic_Map的顶部动态添加PictureBoxes。
问题:一切正常,但是问题是,当我动态添加PictureBoxes时,似乎只在ores
列表中添加了最后一个值(Pic_Map上的红色圆圈)。 因此,由于我有3个与TextBox / ComboBox匹配的值名称,因此最终只显示1个PictureBox而不是3个。
问题:如何使它像我编写/选择“ 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,它已得到修复。
使PIC_Map.controls.add
在循环内移动, this.controls.add
更改为PIC_Map.controls.add
和Ore_Area.Parent = PIC_Map;
被删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.