Не загружаются картинки в программу

157
06 февраля 2018, 06:44

Не работает метод openImageWithFolderButton_Click, должен взять путь выбранной картинки, достать оттуда все картинки с нужным расширением, заполнить ими список, после чего перебрать до первоначальной и вывести ее.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PhotoViewer
{
    public partial class Form1 : Form
    {
        #region Перемненые
        List<string> images = new List<string>();
        DirectoryInfo dir;
        FileInfo[] files;
        string path = null;
        string selectedFile = null;
        int numberOfImage = 0; // индекс картинки для просмотра и скрола
        int imgInImages = 0; // индекс для картинки при выборе всех картинок из папки
        #endregion
        public Form1()
        {
            InitializeComponent();
        }
        private void menuButton_Click(object sender, EventArgs e)
        {
            contextMenuStrip1.Show(MousePosition, ToolStripDropDownDirection.BelowLeft);
        }
        private void filesButton_Click(object sender, EventArgs e)
        {            
            openFileDialog1.Multiselect = true;
            if(openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                numberOfImage = 0;
                images.Clear();
                foreach (var image in openFileDialog1.FileNames)
                {
                    images.Add(image);
                }
                pictureBox1.Load(images[0]);
                imageNameLabel.Text = images[0];
            }
        }
        private void nextButton_Click(object sender, EventArgs e)
        {
            if(numberOfImage != images.Count - 1)
            {
                try
                {
                    numberOfImage++;
                    pictureBox1.Load(images[numberOfImage]);
                    imageNameLabel.Text = images[numberOfImage];
                }
                catch (ArgumentOutOfRangeException) { }
            }
        }
        private void PreviousButton_Click(object sender, EventArgs e)
        {
            if(numberOfImage != 0)
            {
                try
                {
                    numberOfImage--;
                    pictureBox1.Load(images[numberOfImage]);
                    imageNameLabel.Text = images[numberOfImage];
                }
                catch (ArgumentOutOfRangeException) { }
            }
        }
        #region Цвета
        private void menuButton_MouseLeave(object sender, EventArgs e)
        {
            menuButton.BackColor = Color.Black;
        }
        private void menuButton_MouseEnter(object sender, EventArgs e)
        {
            menuButton.BackColor = Color.LimeGreen;
        }
        private void nextButton_MouseEnter(object sender, EventArgs e)
        {
            nextButton.BackColor = Color.LimeGreen;
        }
        private void nextButton_MouseLeave(object sender, EventArgs e)
        {
            nextButton.BackColor = Color.Black;
        }
        private void PreviousButton_MouseEnter(object sender, EventArgs e)
        {
            PreviousButton.BackColor = Color.LimeGreen;
        }
        private void PreviousButton_MouseLeave(object sender, EventArgs e)
        {
            PreviousButton.BackColor = Color.Black;
        }
        #endregion
        /// <summary>
        /// Загружаем все картинки из папки где находится картинка и выводим ее
        /// </summary>
        private void openImageWithFolderButton_Click(object sender, EventArgs e)
        {
            if(openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                numberOfImage = 0;
                images.Clear();
                selectedFile = openFileDialog1.FileName; // запоминаем изначально выбранную картинку
                path = openFileDialog1.FileName;
                // обрезаем имя до пути до папки
                while (path[path.Length - 1] != '\\')
                {
                    path = path.Remove(path.Length - 1, 1);
                }
                path = path.Remove(path.Length - 1, 1);
                //получаем все файлы из папки
                dir = new DirectoryInfo(path);
                files = dir.GetFiles();
                // выбираем файлы с нужным расширением и заполняем ими список images
                foreach (var image in files)
                {
                    if(image.Extension == ".BMP" 
                        || image.Extension == ".JPG"
                        || image.Extension == ".GIF"
                        || image.Extension == ".PNG")
                    {
                        images.Add(image.ToString());
                    }
                }
                // выводим изначально выбранную картинку
                foreach (var image in images)
                {
                    if(image == selectedFile)
                    {
                        pictureBox1.Load(images[imgInImages]);
                        break;
                    }
                    imgInImages++;
                    numberOfImage++;
                }
            }
        }
        private void clearButton_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            images.Clear();
        }
    }
}
READ ALSO
IOrderedEnumerable&lt;T&gt; vs. SortedSet&lt;T&gt;: что быстрее сериализуется?

IOrderedEnumerable<T> vs. SortedSet<T>: что быстрее сериализуется?

Сделал замер, чтобы выяснить создание и итерация какой коллекции быстрее IOrderedEnumerable<T> или SortedSet<T>

220
Программа не считает точно на C# [требует правки]

Программа не считает точно на C# [требует правки]

Доброго времени суток, не могу решить проблему программа выдаёт не правильный результат, я начинающий программист на C#, пожалуйста помогите,...

202
Generic repository в WCF

Generic repository в WCF

Имеется dll, в которой есть сущности и класс для работы с бд (используется рефлексия)Например, у меня обращение в клиенте DataManager

170
Как указать путь к файлу с использованием %USERNAME%?

Как указать путь к файлу с использованием %USERNAME%?

При создании файла или при его чтении я хочу указать путь таким образом, чтобы не приходилось вводить имя пользователяКак это делается в windows:...

144