2009-03-03 7 views
2

コンボボックスに10000個のアイテムを表示したい場合(一例)、ディスクからのリストの読み込みは高速ですが、データソースを設定すると速度が遅くなります。データを指し、コンボボックスコレクションに変換しない方法がありますか?すべては、私は少し奇妙なすべての異なるコレクションを見つけるSTRINGLISTで、なぜ彼らはちょうどList<T>を使用していないか、他のいくつかのクラスは、コントロールと非常にタイトに結合していないデルファイから来るなぜWinFormsのすべての異なるコレクションですか?

List<string> myitems = getItems(); 

ComboBox box = new ComboBox(); 
box.DataSource = myitems;  // <--- Takes a long time 

? Delphiで

textbox.lines = myitems 
listbox.items = myitems 
combobox.items = myitems 

すべてがちょうどインスタントすなわち、同じデータへのポインタを設定します。

答えて

1

基本的なWindowsコンボコントロール(他のいくつかのものなど)は、必要に応じて多数のアイテムをあらかじめロードする必要がなく、「仮想」モードで動作できます。これにより、メモリと時間の両方が節約され、非常に長いコンテンツリストが可能になります。

残念なことに、ネイティブのWinFormコントロールはこの操作モードをサポートしていないようですが、別のラッパーが使用できますか?

関連する問題