Почему все pictureBox в коллекции элементов управления flowLayoutPanel отображают одно и то же изображение? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть FlowLayoutPanel с картинками в нем.Я добавляю несколько PictureBox во время выполнения, как это:

        while (flowLayoutPanel1.Controls.Count < 10)
        {
            flowLayoutPanel1.Controls.Add(new PictureBox());
        }

У меня есть функция, которая делает свойство «Изображение» каждого элемента управления равным значениям «Изображение» изображений в LinkedList.Идея состоит в том, чтобы вызвать метод, когда я хочу добавить новое изображение в очередь изображений.Когда я передаю новое изображение в функцию, все графические блоки в FlowLayoutPanel отображают последнее изображение в связанном списке, а не соответствующее изображение в LinkedList.Я ЕСТЬ подтвердил, что LinkedList на самом деле содержит разные изображения в каждой позиции.Как будто все PictureBox в FlowLayoutPanel ссылаются на последний добавленный.

    internal void AddImage(ThermalImage thermalImage)
    {
        thermalImages.AddFirst(thermalImage);

        while (thermalImages.Count > 10)
        {
            thermalImages.RemoveLast();
        }

        for (int i = 0; i < thermalImages.Count; i++)
        {
            PictureBox p = (PictureBox)flowLayoutPanel1.Controls[i];
            p.Image = thermalImages.ElementAt(i).Image;
        }
    }

Моя инициализация для заполнения FlowLayoutPanel неправильная?Неправильно ли мне присвоить значения элементам управления PictureBox?Почему все PictureBox ссылаются на одно и то же изображение?

...