VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 使用doublebuffered来解决VB.net中datagridview数据显示和滚动慢和卡顿的问题

   最近做一个小数据库管理软件,dataset中有一个交叉查询填充的表,有3000多行,30多列,把这个表bindingsource绑定到datagridview控件上时,出现了卡顿,具体就是加载数据时看到明显的数据一行行显示出来,用鼠标滚动表时,也是一行行的刷新,虽然刷数很快,但用起来很不顺畅。没道理是这样的,在ACCEss中显示一个同样的查询表,就非常流畅,没一点卡顿,我开头以为是因为access中是只读的原因,但把datagridview设成只读一样卡,又按网上的说法把autosizecolumnsmode设成none(本来默认就是none)的,还是一样,最后只有一条路了,设置doublebuffered属性,看看双缓冲有没有效果,可恶的是这个属性是PROTECTED的,无法直接设置,网上的方案都是C++的,没办法死马当活马医,找了一个用VB.net照描:http://www.cnblogs.com/qingteng1983/archive/2010/05/09/1730905.html。

在form1_load开头加入:

 

        Dim type As Type = DataGridView1.GetType()
        Dim pi As PropertyInfo = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance or System.Reflection.BindingFlags.NonPublic)
        pi.SetValue(DataGridView1, True, Nothing)

问题解决!

不过,我还是感觉没有access中那样的流畅,也没有SQL查询结果中流畅,不知是不是心理作用。


相关教程