Vb.net 项目聚焦时列表视图闪烁

Vb.net 项目聚焦时列表视图闪烁,vb.net,listview,Vb.net,Listview,我在VB.NET 2013中有一个在VirtualMode中工作的ListView,用于显示活动日志。它工作正常,但当我将一个项目聚焦在ListView的可见边界之外时除外:在这种情况下,当我将一个项目添加到ListView时,它会闪烁,滚动到聚焦的项目,然后立即返回到上一个位置 ListView也使用以下代码进行双缓冲: Dim pi As PropertyInfo = ListView1.GetType.GetProperty("DoubleBuffered", Reflection.Bin

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

ListView也使用以下代码进行双缓冲:

Dim pi As PropertyInfo = ListView1.GetType.GetProperty("DoubleBuffered", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
pi.SetValue(ListView1, True, Nothing)
此外,我发现当我进入列表视图的顶部时,它会将我带到重点项目,而不会返回


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

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

日志每秒都会添加大量项目。这听起来不太方便用户:用户不能读那么快。听起来你更新GUI太多太频繁了。我知道,但是日志是从外部来源获取的:它是Android系统日志。所以我无法控制项目的数量。据我所知,只有在不使用VirtualMode的情况下,BeginUpdate和EndUpdate方法才有用。看见