我在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的顶部时,它会将我带到焦点项目,并且不会再返回。
如果我尝试禁用双缓冲模式,每次添加项目时都会绘制一个白框,这是不可接受的,因为日志每秒都会添加很多项目。
答案 0 :(得分:0)
在焦点更改之前和之后尝试使用ListView1.BeginUpdate()
和ListView1.EndUpdate()
。