2013-11-15 34 views
0

我正在使用listview(listView1),當我填充數據到它(每秒添加10行)時閃爍。如何在c#中加倍緩衝區列表視圖。 (一步一步)

如何啓用雙緩衝區屬性使其無閃爍。

請給我一步一步的指示。我是c#的新手。

+1

posible dupliacte http://stackoverflow.com/questions/87795/how-to-prevent-flickering-in-listview-when-updating-a-single-listviewitems-text – DragonZero

+0

我試過這個。但是由於我填充速度非常快,所以它凍結了我的應用程序。 – Jake

+0

可以發佈示例代碼,以便我們可以看到發生了什麼? – DragonZero

回答

0

這裏的一個選擇是隻更新listview數據源,以便您不直接訪問您的控件,只有基礎數據源。

DataTable dt = new DataTable(); 
//load the Datatable with items from your external hardware connection. 
myListView.datasource = dt; 

然後,您只更新DataTable,而不是控件的項目列表。使用雙緩衝,您應該看到您需要的影響。

最後,每秒100個listview項目很多,你需要在listview中有這麼多項目嗎?我建議將此列表過濾爲僅當時需要的項目,將使其性能更好。

0

在每秒100行時,您將需要雙緩衝和虛擬模式。

雙緩衝需要子類化ListView並設置DoubleBuffered保護屬性。虛擬模式需要將行數設置爲VirtualSize,然後響應RetrieveVirtualItem事件。

你應該認真考慮使用ObjectListView這是一個圍繞.NET ListView的開源包裝,可以解決大量問題,所以你不必這樣做。