在WinForm中对ListView、TreeView等列表控件列表进行大量操作时会出现严重的闪烁、卡顿。
开启双缓冲前:

开启双缓冲后:

开启双缓冲有三种方法:
1. 继承列表控件类,在构造函数内开启双缓冲,然后将设计器代码文件中的控件类型修改为MyListView
public class MyListView : ListView
{
public MyListView()
{
// 也可以通过 SetStyle 的方法,不过这种方式更简单
DoubleBuffered = true;
}
}
2. 根据第一条可以知道有一个DoubleBuffered属性,不过是隐藏的外部无法调用,那么可以通过反射去更改属性值
typeof(ListView).GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(this.listView1, true);

本文介绍了如何解决WinForm中ListView、TreeView控件在大量操作时出现的闪烁和卡顿问题,通过开启双缓冲来提升用户体验。文中详细讲述了三种开启双缓冲的方法:继承控件类、反射设置DoubleBuffered属性以及使用Win32API SendMessage,并推荐使用AddRange方法进行批量添加以提高效率。
最低0.47元/天 解锁文章
1865

被折叠的 条评论
为什么被折叠?



