2009-05-29 28 views
0

我有一個所有者ListView在滾動時「塗抹」。它只是因爲它移動到可見的列表的影響最後顯示的項目...所有者在滾動時繪製ListView「塗抹」

它看起來像:

胡說
胡說
胡說

...已經全部被繪製在彼此之上,相隔1個像素。 在DrawItem事件的代碼形式

Rectangle rect = new Rectangle(e.Bounds.X + mIconSize.Width, 
    e.Bounds.Y, e.Bounds.Width, e.Bounds.Height); 
e.Graphics.DrawString(episode.ToString(), this.Font, mBlackBrush, rect); 

的我完全難倒。 感謝您的任何想法! Dave

+0

這不是一個雙緩衝問題(我試過)謝謝你的想法,但! – 2009-06-01 03:04:56

回答

1

您可以通過派生它並設置DoubleBuffered = true來爲ListView啓用雙緩衝。一旦開啓雙緩衝,閃爍就會明顯減少,特別是在平鋪視圖中。

+0

原來這是一個雙緩衝問題。我需要創建一個從ListView繼承的類,並在構造函數中打開雙緩衝 – 2009-06-03 18:35:09

0

另外,int表單的屬性,可以啓用DoubleBuffer。另外,還有一些你可以使用的命令。

更多信息可以通過在谷歌搜索DoubleBuffer C#找到(抱歉,作爲一個新用戶,我不能發佈鏈接)。

0

這是ListView控件中的一個已知錯誤。

1

詳細查看繪圖在DrawSubItem(...)中完成所有繪圖。問題是drawItem被調用的第一個項目和DrawSubitem也爲同一項目...略有不同的界限。

+0

這聽起來很明智我會嘗試! – 2010-02-01 21:07:05