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)が、制限は長い間知られていました. 2004年からの答えです。

以前のバージョンの Windows では、100,000,000 以上を試すと OS がクラッシュしました :)

私の XP および Vista マシンでは、100,000,000 を超える行を試行すると、サイズが 9,999,999 に制限されます。

于 2010-03-17T12:39:21.380 に答える