使用treeview显示数据库数据
使用 TV.Nodes.Add 添加节点
加 doevents 可以看到节点的添加过程无论是数据量大还是数据量小 填加单个速度都没什么变化
还有就是 TV.Nodes.Clear 清空时也是非常的慢请问这是treeview的问题还是我程序的问题请问应该怎么来提高速度呀

解决方案 »

  1.   

    如果你的TreeView的Node不多的话,那就是你的程序的问题,如果很多是正常现象,写TreeView前先使TreeView.Visible = False,写完后再设置成True,这样至少看不出来
      

  2.   

    就是 
    do while rst.eof=falsetv.node.addrst.movenext
    loop程序就是这样呀
      

  3.   

    那可能是你的记录太多了
    do while not rst.eoftv.node.addrst.movenext
    loop
      

  4.   

    数据量大是正常的1.
     可用lockwindowupdate treeview1.hwnd 先禁止控件更新
    添加数据完成后再用lockwindowupdate 0 解禁
    2.可先添加第一层数据,展开时再加载下层数据
      

  5.   

    >根据大类检索子类数据
    意思是不是每个大类都要做一次 SQL 的 SELECT 操作,如果是的话,请测试一下:
    不执行 Treeview.node.add,仅仅将两层循环全部执行一下,是否很慢?建议将全部的大类和全部的子类用两个 RecordSet 一次性读入,用大类检索子类只需设置 RecordSet.Filter 属性就可以了。
      

  6.   

    建议子节点在父节点点击事件中加载.节点多时,可以先加载可见部分的节点,其他节点在TREEVIEW 的 SCROLL事件中再加载
      

  7.   

    1.逐层加入:现加第一层子节点,在expand函数中加下面的2.去掉doevents确实可以提高速度,我在1k个节点下试验过了。可以用一个progressbar来显示进度3.是否是连接数据库的速度,也就是说从数据库取数据的时间消耗太大。试着用等量的数组来代替数据库试验一下就知道了。多试验就出来了,希望对你有帮助
      

  8.   

    数据量大的时候用doevents语句可以空闲CPU资源,使程序看上去不会像死机。不过这是以降低速度为低价的(因为程序要刷新界面)。提升速度有两种方法:一是将控件的AutoRedraw 属性先设置为False,添加完数据后,再设置为True
    二是填加数据之前将控件的Visible属性设置为False,添加完后再设置为True其实这两种方法都是在填加数据的时候防止控件重绘,以加快速度。