2009-05-29 32 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