当项目聚焦时,ListView会闪烁

时间:2014-11-03 18:01:03

标签: vb.net listview

我在VB.NET 2013中有一个ListView在VirtualMode中工作,我用它来显示活动日志。它工作正常,除非我有一个项目聚焦在ListView的可见边界之外:在这种情况下,当我向ListView添加一个项目时,它会闪烁滚动到焦点项目,然后立即返回到前一个位置。

使用以下代码,ListView也是DoubleBuffered:

Dim pi As PropertyInfo = ListView1.GetType.GetProperty("DoubleBuffered", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
pi.SetValue(ListView1, True, Nothing)

另外,我发现当我进入ListView的顶部时,它会将我带到焦点项目,并且不会再返回。

如果我尝试禁用双缓冲模式,每次添加项目时都会绘制一个白框,这是不可接受的,因为日志每秒都会添加很多项目。

1 个答案:

答案 0 :(得分:0)

在焦点更改之前和之后尝试使用ListView1.BeginUpdate()ListView1.EndUpdate()