我正在繪製.Net Windows窗體ListView控件,並在需要從關聯的LargeImageList中繪製圖像時看到一個非常奇怪的錯誤/行爲。.Net Windows窗體ListView OwnerDraw LargeImageList泄漏
當View類型是使用LargeImageList(Tile,LargeIcon等)的類型時,我從LargeImageList中繪製項目圖像。在這種情況下,我看到了巨大的內存增加,當您嘗試滾動ListView時,這會變得更加明顯,因爲您還會看到一個生澀的滾動。當同樣的代碼使用SmallImageList這同樣的事情不會發生這簡直是這樣的:
Image MyImage = this.LargeImageList.Images[MyIndex];
e.Graphics.DrawImage(MyImage,MyLocation);
這根據我的測試是XP和7下可再現。這是一個已知的錯誤,任何解決方法?
問候,
Özden
從.Net 2開始,ListView提供了ownerdraw功能並引發了諸如DrawItem,DrawSubItem等事件。我想這些事件會在需要重繪時爲每個項目提出。我不重寫控件WNDProc來捕獲WM_PAINT或其他任何東西。 – 2009-11-16 18:29:59