Winform的DataGridView在绑定比较多的数据后,每次选中不同单元格或者下拉滚动条时,DataGridView重绘都非常慢,明显看到它从上往下一行一行重绘,这种感觉非常卡顿。
其实这个问题在.NET程序员中早就有讨论,且有了解决方案,办法就是用打开双缓冲模式 DoubleBuffered。但是DataGridView根本找不到这个属性,因为这个属性默认时被隐藏的。不过不要紧,高手们想出了用反射来设置这个属性的方法,具体代码如下。
可以把下面的代码放到Form_OnLoad()事件中,其中dataGridView1就是你要设置属性的dataGridView1实例名。
Type dgvType = this.dataGridView1.GetType();
PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(this.dataGridView1, true, null);
打开这个属性之后,再下来DataGridView数据时,没有一点卡顿了,用户体验非常棒。