Динамическое создание PictureBox N-го количества

323
15 февраля 2017, 20:46

В общем, есть папка с изображениями, при выборе этой папки на форме нужно создать PictureBox и в каждый PictureBox поместить изображение, т.е - получается как бы "страница" с изображениями. Только нужно предусмотреть, чтобы PictureBox не выходил за рамки самой формы, может можно поместить в какой-нибудь "контейнер" у которого появляется скролл?

Подскажите, пожалуйста, буду очень благодарен.

Скриншот для визуального примера.

Answer 1

Разобрался! Проблема с исключением OutOfMemoryException была из-за того, что в папке с изображениями присутствовал скрытый файл Thumbs.db. Можете удалить вручную, а можно игнорировать это исключение.

Создайте FlowLayoutPanel поставьте AutoScroll = true и Dock = Fill.

Код:

List<PictureBox> picturebox = new List<PictureBox>();
DirectoryInfo directoryInfo = new DirectoryInfo(@"путь к папке с изображениями");
var recentpics = directoryInfo.GetFiles().ToList();
var y = 10;
foreach (var file in recentpics)
{
    var pb = new PictureBox();
    pb.Location = new Point(picturebox.Count * 120 + 20, y);
    pb.Size = new Size(100, 120);
    try 
    {
        pb.Image = Image.FromFile(file.FullName);
    }
    catch (OutOfMemoryException) { continue; }
    pb.SizeMode = PictureBoxSizeMode.StretchImage;
    flowLayoutPanel1.Controls.Add(pb);
    picturebox.Add(pb);
}

Результат:

Answer 2

В качестве контейнера лучше использовать FlowLayoutPanel и помещать туда эскизы, вызвав у Image GetThumbnailImage. System.OutOfMemoryException может возникнуть, когда длина файла с картинкой равна 0 (ну или в файле содержится не картинка, это не берусь утверждать)

READ ALSO
Запрос к Many-To-Many используя Linq

Запрос к Many-To-Many используя Linq

Имею такие таблицы созданые через EF

330
Как сделать backup/restore базы MSSQL программно

Как сделать backup/restore базы MSSQL программно

Как можно сделать backup/restore базы данных MSSQL программно на C#? Пользователь выбирает место сохранения (например, флешку) и база сохраняется

337
как сделать ссылку с двумя параметрами?

как сделать ссылку с двумя параметрами?

Вопрос такой как сделать что бы в одной ссылке передавалось 2 get параметра

328
ограничить дерево комментариев

ограничить дерево комментариев

Есть функция которая отлично собирает дерево

292