Я использую FlowLayoutPanel для динамического отображения массива PictureBoxes и Labels. Они идут в следующем порядке: PictureBox-Label-PictureBox-Label и так далее. Мне нужно, чтобы эти ярлыки появлялись над каждым изображением, чтобы они соответствовали друг другу, в основном, размещая их поверх полей в картинке. Я попытался использовать Controls.SetChildIndex(temp, 2);
, но, похоже, просто поменял местами картинку. Я также попытался использовать temp.BringToFront();
, но затем все графические блоки отображаются в верхней части панели, а все метки находятся ниже (мне нужно, чтобы каждая метка соответствовала каждой картинной коробке над ними). Вот код:
public void RunMeta()
{
Label mostPickedLabel = new Label();
mostPickedLabel.Text = "Most picked heroes";
flowLayoutPanel1.Controls.Add(mostPickedLabel);
mostPickedLabel.Margin = new Padding(15, 0, 1000, 0);
mostPickedLabel.Font = new Font("Lucida Sans Unicode", 15);
mostPickedLabel.ForeColor = Color.DarkCyan;
mostPickedLabel.Size = new Size(200, 30);
foreach (var mostPickedHero in FetchDataFromDota2Site.MostUsedHeroesAndImages)
{
PictureBox temp = new PictureBox();
temp.ImageLocation = mostPickedHero.ImageSource;
temp.SizeMode = PictureBoxSizeMode.StretchImage;
temp.Left = temp.Width * flowLayoutPanel1.Controls.Count;
temp.Margin = new Padding(15, 30, 15, 30);
flowLayoutPanel1.Controls.Add(temp);
flowLayoutPanel1.AutoScroll = true;
Label heroName = new Label();
heroName.Text = mostPickedHero.MostPickedHeroName;
heroName.Font = new Font("Lucida Sans Unicode", 8);
heroName.ForeColor = Color.White;
flowLayoutPanel1.Controls.Add(heroName);
}
}