在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.Bind