Virtual ListView падает при проставлении VirtualListSize
От: Ёрик  
Дата: 10.02.08 15:38
Оценка:
На форме есть ListView в виртуальном режиме. При определённых условиях этот ListView должен заполняться новым набором значений. Соответственно меняю его размер — от 0 до многа. Изменение значения VirtualListSize приводит к такому падению:

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in System.Windows.Forms.dll

Additional information: InvalidArgument=Value of '2' is not valid for 'index'.

при следующих шагах: выбираю последний элемент ListView, когда в нём много элементов (порядка 600), потом меняю размер на маленький (скажем, 2). Попробовал поставить lock(this) в месте, где меняю размер листа и в OnRetrieveVirtualItem — падать стало реже, но стабильно. Такое впечатление, что кто-то внутри ещё отрисовывает предыдущий набор айтемов количеством 600 и ему не нравится проставление размера листа в 2.

Как это цивильно решить? Прокатывает try-catch с повторным выставлением VirtualListSize в catch, но это как-то чересчур криво.

P.S. Искал тут подобную проблему — нашёл несколько десятков багрепортов про RSDN@home с идентичным текстом исключения, увы, без решения. Но, стало быть, проблема известная и частая.
Re: Virtual ListView падает при проставлении VirtualListSize
От: Drusha Россия  
Дата: 10.02.08 22:42
Оценка: 34 (2)
Посмотри здесь
Re[2]: Virtual ListView падает при проставлении VirtualListS
От: Ёрик  
Дата: 10.02.08 22:53
Оценка:
Здравствуйте, Drusha, Вы писали:

D>Посмотри здесь

Спасибо большое! Прикольно, на первую багу я тоже наткнулся (молчаливое падение даже без эксепций при 260 символах).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.