Set nodeX = .Nodes(.Nodes.Count) If nodeX Is Nothing Then Exit Function nodeX.Selected = True .DropHighlight = tvwHeader.SelectedItem Call tvwHeader_NodeClick(.SelectedItem) End If End With
End Function以上是我优化时候用的,速度比原来快,好像没有遇到你的那个刷新的问题。可以试试,都是高手,请提意见
就是说这,你单独调用没错,但在点饥接点时(此时要求Node存在)又删除所有接点,如下: sub N_Click(nNode as Node) tree.clear'nNode已经没了 load '加载新接点 nNode.haha'nNode 还是以前的nNode么 end Sub
用这个试一下
可能是你的数据库还没有完成更新,比如速度慢,而这里已经开始更新TreeView了,当然这个时候就有干什么类似的“记忆功能”了
Dim nIndex As Integer
Dim nodeX As MSComctlLib.node
Dim strSQL As String
With Treeview
For nIndex = 1 To .Nodes.Count
Set nodeX = .Nodes(nIndex)
If Trim(nodeX.Text) = sCode Then Exit For
Next nIndex
If nIndex < .Nodes.Count Then
.Nodes(nIndex).Selected = True
.DropHighlight = tvwHeader.SelectedItem
Call Treeview_NodeClick(.SelectedItem)
Call RefreshNode(.SelectedItem)
.SetFocus
Else
Call FillTicketTree(strSQL, strSQL) '添加treeview的code
Set nodeX = .Nodes(.Nodes.Count)
If nodeX Is Nothing Then Exit Function
nodeX.Selected = True
.DropHighlight = tvwHeader.SelectedItem
Call tvwHeader_NodeClick(.SelectedItem)
End If
End With
End Function以上是我优化时候用的,速度比原来快,好像没有遇到你的那个刷新的问题。可以试试,都是高手,请提意见
sub N_Click(nNode as Node)
tree.clear'nNode已经没了
load '加载新接点
nNode.haha'nNode 还是以前的nNode么
end Sub