#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. Подождите, вы правы. Изображение никогда не находится в списке, только имя. Что ж, это полдня разочарования впустую. Спасибо за помощь