滚动时,所有者绘制ListView“涂抹”

时间:2009-05-29 00:09:44

标签: c# graphics listview ownerdrawn

当我滚动时,我有一个所有权的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);

我完全难过了。 感谢任何想法! 戴夫

4 个答案:

答案 0 :(得分:1)

您可以通过派生并设置DoubleBuffered = true为ListView启用双缓冲。一旦你打开Double Buffering,闪烁就会明显减少,尤其是在Tile视图中。

答案 1 :(得分:1)

详细视图在DrawSubItem(...)中完成所有绘图。问题是drawItem被调用第一个项目而DrawSubitem也用于相同的项目......边界略有不同。

答案 2 :(得分:0)

另外,在表单自己的属性中,您可以启用DoubleBuffer。 另外,您可以使用几个命令。

通过在谷歌搜索DoubleBuffer C#可以找到更多信息(抱歉,作为新用户,我无法发布链接)。

答案 3 :(得分:0)

这是ListView控件中的已知错误。