0

我有一个所有者绘制的 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

4 回答 4

1

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

于 2009-05-29T02:54:22.713 回答
1

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

于 2010-01-29T22:45:39.967 回答
0

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

通过在 google 上搜索 DoubleBuffer C# 可以找到更多信息(对不起,作为新用户,我无法发布链接)。

于 2009-05-29T22:16:04.083 回答
0

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

于 2009-09-18T07:42:37.520 回答