2010-03-16 2 views
0

У меня есть сценарий сетки с> 500 000 000 строк Я хотел бы отобразить в ListView.Является ли WinForms ListView в VirtualMode ограниченным до 100 000 000 строк?

Если я искусственно ограничить мой ListView для отображения 100000000:

_listView.VirtualListSize = _data.Count; 
if (_listView.VirtualListSize > 100000000) 
    _listView.VirtualListSize = 100000000; 

Все отлично работает (в VirtualMode естественно). Когда я изменить свой код на:

_listView.VirtualListSize = _data.Count; 
if (_listView.VirtualListSize > 100000001) 
    _listView.VirtualListSize = 100000001; 

ListView отобразить пустую сетку ... Является ли это ошибка Microsoft? Откуда это? Это ограничение Win32 ListView? Самое главное, почему это не документировано?

+0

Если вы показываете пользователю 50M записей, последний вопрос, который вы должны задать, - «как я могу отображать 100M?». GUI нуждается в повторном дизайне, stat! – Juliet

+0

Это в VirtualMode. Пользователь имеет множество методов для навигации по данным, которые не такие глупые, как прокрутка по одному. Почему VirtualMode должен ограничиваться чем-то меньшим, чем 64 бит? Кроме того, почему это не прокомментировано? И кто решает, что 100 000 000 в порядке, но 100 000 001 нет? – damageboy

+0

@Juliet Посмотрите на [Picasa] (http://picasa.google.com/). Он может отображать несколько миллионов элементов (у меня всего несколько миллионов изображений), и он отлично подходит для пользователя. Реакция коленного рефлекса * больше, чем ** x ** предметов слишком много * просто недействительна. –

ответ

4

Нельзя делать. Как вы нашли, 100 000 000 является абсолютным пределом. MS никогда не документировала его (AFAIK), но предел известен уже давно: an answer from 2004.

В предыдущих версиях ОС Windows, пытаясь более чем 100,000,000 разбился ОС :)

На моем XP и Vista, машины, пытаясь более 100000000 строк ограничивает размер до 9999999.