Не все элементы формы(контролы) выводятся в цикле. Как исправить?

У меня есть метод вывода всех контролов в списке:

    private void Update(List<PictureBox> pbs)
    {
        foreach(var pb in pbs)
        {
            pb.Top = pictureBox2.Top - sm;
            sm = sm + 20;
            panel2.Controls.Add(pb);
        }
    }

В списке все элементы присудствуют: введите сюда описание изображения

Но выводятся только два контрола. Как исправить данную проблему?

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Эрнст Краузе

Проблема была в том, что метод Controls.Add() не хотел добавлять элементы из списка, поэтому пришлось создавать элемент и сразу добавлять его через метод Controls.Add().

Метод в самой форме:

    private void Draw()
    {
        for (int i = 0; i < unitnubmer; i++) 
        {
            var pb = panell.Draw();
            pb.MouseDown += pictureBox2_MouseDown;
            pb.Top = pictureBox2.Top - sm;
            sm = sm + 13;
            panel2.Controls.Add(pb);
            pictureBoxes.Add(pb);
        }
    }

Метод в объекте panell:

    public PictureBox Draw()
    {
        string fileName = Path.Combine(Environment.CurrentDirectory, "cc.png");
        //Если была выбрана и загружена картинка, то...
        Image img = referencePB.Image;
        //...создадим новый PictureBox, загрузим в него картинку и укажем
        //дополнительные параметры для него.
        picbox = new PictureBox();
        picbox.Image = img;
        picbox.Left = referencePB.Left;
        picbox.Width = referencePB.Width;
        picbox.Height = referencePB.Height;
        picbox.Top = referencePB.Top;
        picbox.SizeMode = PictureBoxSizeMode.Zoom;
        //Добавим созданный PictureBox в списочек
        return picbox;
    }

Буду рад, если найдётся человек, который найдёт способ выводить элементы из списка методом Controls.Add()

→ Ссылка