C # - загрузка изображений в список изображений и просмотр списка - PullRequest
1 голос
/ 03 сентября 2010

У меня есть программа, над которой я работаю, чтобы загрузить некоторые изображения и отобразить их в виде списка после использования openfiledialog. Сейчас я хочу сделать еще один шаг и автоматически загрузить изображения из каталога «icons» в каталоге приложения. Я не очень уверен, как это сделать, так что я собираюсь вставить свой текущий код сюда и обработать его оттуда ...

private void loadImageLibraryToolStripMenuItem_Click(object sender, EventArgs e)
    {
        openFileDialog1.Multiselect = true;
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            if (openFileDialog1.FileNames != null)
            {
                for (int i = 0; i < openFileDialog1.FileNames.Length; i++)
                {
                    addImage(openFileDialog1.FileNames[i]);
                }
            }
            else
                addImage(openFileDialog1.FileName);
        }
    }

    private void addImage(string imageToLoad)
    {
        if (imageToLoad != "")
        {
            imageList1.Images.Add(Image.FromFile(imageToLoad));
            listView1.BeginUpdate();
            listView1.Items.Add(imageToLoad, baseValue++);
            listView1.EndUpdate();
        }
     }

Редактировать для уточнения: предоставленный код показывает, как загружать и отображать изображения в элементе управления списком. Теперь я собираюсь запустить приложение, автоматически загрузить изображения из папки в каталоге программ, а затем отобразить их в виде списка.

1 Ответ

2 голосов
/ 03 сентября 2010

С макушки головы без IDE, поэтому могут быть ошибки!попробуйте это

var files = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\icons")

файлы будут массивом строк, содержащих все файлы в каталоге, которые вы можете затем зациклить, как вы использовали выше, используя массив

openFileDialog1.FileNames

\ может неперед значками, я не могу вспомнить, удаляет ли GetDirectoryName завершающий \ из пути или нет.

Вы также можете передать фильтр в GetFiles, чтобы он возвращал только определенные типы файлов.

HTH

РЕДАКТИРОВАТЬ: я отредактировал код выше, чтобы использовать

System.Windows.Forms.Application.ExecutablePath

вместо

System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase

При тестировании кода теперь у меня есть доступ к IDE, кажется,Свойство CodeBase добавляет путь к файлу file: ///, из-за которого моя среда IDE взорвалась с ошибкой о том, что

форматы URI не поддерживаются

код теперь работает в моей среде IDE.Убедитесь, что ваш каталог значков находится в том же каталоге, что и ваш исполняемый файл, поэтому в моем случае .... bin \ debug \

Попробуйте и, если это все равно не получится, дайте мне знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...