Ограничен ли WinForms ListView в VirtualMode 100000000 строк?

У меня есть сценарий сетки с> 500 000 000 строк, которые я хотел бы отобразить в ListView.

Если я искусственно ограничиваю свой ListView для отображения 100 000 000:

 _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? Самое главное, почему это не задокументировано?

1 ответ

Решение

Это не может быть сделано. Как вы обнаружили, 100 000 000 - это абсолютный предел. MS никогда не документировал это (AFAIK), но предел был известен в течение длительного времени: ответ от 2004 года.

На предыдущих версиях Windows при попытке более 100 000 000 разбился ОС:)

На моих машинах с XP и Vista, проба более 100 000 000 строк ограничивает размер до 9 999 999.

Другие вопросы по тегам