Imagelist неправильная работа

204
04 апреля 2017, 09:10

Пишу для себя небольшую программку. Появилась проблема с imageList. Ближе к делу: прога принимает картинку с сервера в формате base64 дешифрует и вставляет в listview таким образом.

Image im = Base64ToImage(base64);
imageList1.Images.Add(im);
listView1.SmallImageList = imageList1;
listView1.LargeImageList = imageList1;
listView1.Items.Add(new ListViewItem 
{ 
    ImageIndex = id, 
    Text = " " + location.Split('-')[1] 
});

Картинка добавляется все ок. Выглядит вот так:

Но! Как быть если я хочу удалить строку? Вернее даже не строку а картинку. Строку удаляю вот так:

listView1.Items.RemoveAt(id);

Но картинка остается в image list. Её удаляю так:

imageList1.Images.RemoveAt(id);

И теперь самое забавное. Как бы в imageliste картинки то уже и нету но в listview она по прежнему отображается. Например:

Жмякаю удалить. С imagelist удаляется последняя картинка, но в listview ничего не меняется. Жмякаю удалить. С imagelist удаляется предпоследняя картинка, но в listview ничего не меняется. Жмякаю удалить. С imagelist удаляется первая картинка(последняя в imagelist), в listview не остается ни одной картинки :(

Почему так происходит? Как правильно удалять? Подскажите куда копать. Гугл гуглил но про Remove там мало инфы.

Answer 1
    public void Refresh(int id)
    {
        int c = _clientSockets.Count - 1;
        for (int i = 0; i < c; i++)
        {
            listView1.Invoke((MethodInvoker)delegate { listView1.Items[i].SubItems[1].Text = i.ToString(); listView1.Items[i].ImageIndex = i + 1; });
        }
        listView1.Invoke((MethodInvoker)delegate { imageList1.Images.RemoveAt(id); });
        for (int i = 0; i < c; i++)
        {
            listView1.Invoke((MethodInvoker)delegate { listView1.Items[i].ImageIndex = i; });
        }
    }
READ ALSO
Как задать цвет пикселям?

Как задать цвет пикселям?

Мне выдаёт ошибку:

270
Область влияния переменных в c#?

Область влияния переменных в c#?

Я немного запутался, вот есть два куска кода, в котором в одном из них поле помечено модификатором static -значит оно глобальное и объявлено...

308
Отсутствует шаблон для WPF4 в MVVM Light

Отсутствует шаблон для WPF4 в MVVM Light

скачал и установил MVVM Light V52

216
Выбор паттерна проектирования WCF

Выбор паттерна проектирования WCF

Есть следующая задача: Приложение A посылает приложению B данныеПриложение B эти данные получает и уведомляет приложение A, после чего осуществляет...

218