C # Как мне перебирать изображения в списке

#c# #image #casting #listboxitem

#c# #изображение #Кастинг #элемент listboxitem

Вопрос:

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

 foreach (Image I in listbox1.items)
{
     Resize(I, x, y)
}
  

Я получаю эту ошибку «не удается преобразовать объект типа system.string в тип system.drawing.image». Есть идеи?

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

 Picturebox1.Image = (Image)listbox.selecteditem;
  

Я помню, что это работало, но больше не будет. Я предполагаю, что я неправильно помню код, есть альтернативы?

Комментарии:

1. Покажите нам код, который выполняет ListBox. Товары. Добавьте, вы делаете это неправильно в этой части вашего кода.

2. Нет никакого смысла помещать изображения в ListBox, он не знает, как их отображать. Очевидно, что вы помещаете в него строки. Ваш код не может работать со строками.

Ответ №1:

Ты — ListBox.Товары.Неправильное добавление. Добавьте объект Image, а не строковый путь к изображению, URL или Image.toString().

Теперь я понял .. вы не делаете ListBox.Товары.Добавить (изображение), потому что в противном случае вы увидите «мусор» в списке, поэтому ответ заключается в создании объекта-оболочки:

 class ImageWrapper
{
  public Image image;
  public string displayName;
  public override string ToString()
  {
    return displayName;
  }
}
  

затем выполните

 var iw = new ImageWrapper();
iw.image = <yourImage>;
iw.displayName = "Text for listbox here";
ListBox.Items.Add(iw);
  

Комментарии:

1. У меня уже есть изображения в списке, добавление их не проблема. Он получает их из списка.

2. Подождите, вы правы. Изображение никогда не находится в списке, только имя. Что ж, это полдня разочарования впустую. Спасибо за помощь