1

我有一些网格场景,我想在 ListView 中显示 > 500,000,000 行。

如果我人为地将我的 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 限制吗?最重要的是,为什么没有记录?

4

1 回答 1

5

这是不可能的。如您所见,100,000,000 是绝对限制。MS 从未记录过它(AFAIK),但这个限制早已为人所知:an answer from 2004

在以前版本的 Windows 上,尝试超过 100,000,000 次会使操作系统崩溃 :)

在我的 XP 和 Vista 机器上,尝试超过 100,000,000 行会将大小限制为 9,999,999。

于 2010-03-17T12:39:21.380 回答