原来看官方说明,要把虚拟模式打开,VirtualMode = true,然后自己搞内存缓存,才会快。
然而我试过了,并不会。因为我的数据是在sqlite中的,搞了cache 一样到了边界时,还是要触发取一批数据。
并且刷新时,还是明显可见的画格子那种慢速操作。
后来,某一天在网上找到,居然把 DataGridView 手工设置成 双缓冲 就可以了。。试了一下,以我那几万条的数据,根本就不需要使用到 虚拟模式 都完全可以满足使用需求了。
这里记录一下。
1 public partial class MyClass: UserControl 2 { 3 4 public MyClass() 5 { 6 InitializeComponent(); 7 SetDataGridViewDoubleBuffered(); 8 } 9 10 private void SetDataGridViewDoubleBuffered() 11 { 12 Type dgvType = this.dgvMarketHistoryData.GetType(); 13 PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 14 pi.SetValue(dgvMarketHistoryData, true, null); 15 } 16 }