当前位置:编程学习 > VB >>

如果提高填充TreeView的速度

我需要一次性写入TreeView大约几万条记录,其父结点与子结点的关系是动态的,也就是树形层级是动态的。发现速度奇慢。有没有什么好的优化办法?
代码如下:
TreeView1.Nodes.Clear
Dim FParentID() As Long
Dim FNote() As String
Dim Node() As Node
Me.MousePointer = 11
If cnn1.State = 1 Then
    cnn1.Close
End If
cnn1.Open
Dim mycommand As New ADODB.Command '命令
Dim rstByQuery As New ADODB.Recordset
Dim parm_cxyph As New ADODB.Parameter

parm_cxyph.type = adVarChar
parm_cxyph.Size = 200
parm_cxyph.direction = adParamInput
parm_cxyph.Value = Text1(0).Text
mycommand.Parameters.Append parm_cxyph

mycommand.CommandTimeout = 120

mycommand.ActiveConnection = cnn1 '指定该command的当前活动连接
mycommand.CommandText = "cwdata.dbo.HS_getNetTop"
mycommand.CommandType = adCmdStoredProc
Set rstByQuery = mycommand.Execute()
If rstByQuery.EOF Then
    cnn1.Close
    Me.MousePointer = 0
    TreeView1.Visible = True
    Exit Sub
End If
Dim lngMax As Long
lngMax = rstByQuery.RecordCount - 1
ReDim FParentID(lngMax)
ReDim FNote(lngMax)
ReDim Node(lngMax)
Dim i As Long
Do While Not rstByQuery.EOF
    FNote(i) = rstByQuery.Fields(1).Value
    FParentID(i) = rstByQuery.Fields(2).Value
    i = i + 1
    rstByQuery.MoveNext
Loop
cnn1.Close
DoEvents
TreeView1.Visible = False
For i = 0 To lngMax
    Set Node(i) = TreeView1.Nodes.Add(, , , FNote(i))
    If FParentID(i) >= 0 Then
        Set Node(i).Parent = Node(FParentID(i))
    End If
    Next
Me.MousePointer = 0
TreeView1.Visible = True
Exit Sub
errlb:
If cnn1.State = 1 Then
    cnn1.Close
End If
Me.MousePointer = 0
MsgBox err.Description, vbCritical
TreeView1.Visible = True Treeview 优化 --------------------编程问答-------------------- 假设让你做个资源管理器的树形列表,你打算枚举全部文件?你看WINDOWS这么做了吗?只加载第一层,打开的时候动态添加 --------------------编程问答-------------------- 根据需要展开,即使几千条,用户也看不过来,全部加载是没有必要的 --------------------编程问答-------------------- 只加载需要显示的部分.

比如现在有10W条数据,分成10个独立分支,当前只有一个分支展开了一级,那就把这些能看到的加载上去罗.

都看不见的数据没必要加载,浪费时间啊. --------------------编程问答-------------------- 加载当前层,再加载当前层的子层,不然看不到前面加减号。

也就是说得预加载一层。
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,