2017-11-09 11 views
1

ユーザーのしきい値を超えるプロパティを持つ行を強調表示するRowFormatterでObjectListViewがあります。ユーザーがしきい値を変更すると、項目を再描画してRowFormatterを再度呼び出すコントロールが必要になり、新しいしきい値が視覚的に適用されます。コントロールの無効化は何もしないようです。コントロールに45000個のオブジェクトがあるため、SetObjectsを再度呼び出すと3〜5秒の遅延が発生します。可視オブジェクトだけでRefreshObjects()を呼び出す方法はありますか?ObjectListViewの表示アイテムを強制的にリフレッシュする方法はありますか?

答えて

0

私はこのような何かを実行していた思い付くことが最高:

int lvi = myOLV.TopItemIndex; 
for (int i = 0; i < 30; i++) 
    myOLV.RefreshItem((OLVListItem)myOLV.Items[i + lvi]); 

たび書式設定ルールが変更行。これにより、リストビューに表示される最初の30項目がリフレッシュされます。私は誰かが、十分でない可能性がある、ポートレート指向の大型モニタを使用しているとします。しかし、それは速く、私のために働く。

0

代わりにFastObjectListViewを使用するとよいでしょう。そののVirtualObjectListViewの実装は、より速く、ObjectListViewです。実装の詳細についてはわかりませんが、必要に応じてオブジェクトを処理/更新するだけで、必要なものを正確に処理することができます。

いくつかのマイナーな制限があります。 - それはタイルビュー を使用することはできません - それは、アニメーションGIF を表示することはできません - それはXP

にグループを表示することはできません

はそれは、それは他のすべきであるとドロップイン置換であれば特にあなたは何もしません。

+0

ほとんどの場合、実際にはTreeListViewsなので、FastObjectListViewはオプションではありません。また、オブジェクト自体はまったく変更されていません。行の書式設定のルールだけです。 – user2004760

関連する問題