请教一个关于treeview定位的问题
我的程序里treeview结构是通过数据库生成的,所以添加修改删除移动都是通过数据库来实现的,但是有一个问题一直比较困扰,每次数据库更新后重构treeview时,节点的焦点就会复位到root,如何让焦点保留在刷新前的位置?
我试过find的方式定位,有些操作可以达到效果,有些操作不起左右。
每当重构Treeview后执行FindNode,表现不稳定。
TreeRedraw tvCodeItems.hwnd, True
FindNode CurNode.Key, CurNode.Parent.Key
Private Sub FindNode(ByVal sKey As String, ByVal sParentKey As String)
On Error Resume Next
Dim i As Integer
Dim bFind As Boolean
For i = 1 To tvCodeItems.Nodes.count
MsgBox tvCodeItems.Nodes(i).Key & ":" & sKey
If Left(Replace(tvCodeItems.Nodes(i).Key, "C", ""), 11) = Left(Replace(sKey, "C", ""), 11) Then
tvCodeItems.Nodes(i).Selected = True
bFind = True
Exit Sub
End If
Next
If Not bFind Then
For i = 1 To tvCodeItems.Nodes.count
MsgBox tvCodeItems.Nodes(i).Key & ":" & sParentKey
If tvCodeItems.Nodes(i).Key = sParentKey Then
tvCodeItems.Nodes(i).Selected = True
Exit Sub
End If
Next
End If
End Sub
请高人指点迷津,谢谢!
[解决办法]
你只可知道KEY,就可以直接定位。
tvCodeItems.Nodes(key).Selected = True
tvCodeItems.Nodes(key).E什麼方法
[解决办法]
tvCodeItems.Nodes(key).Selected = TruetvCodeItems.Nodes(key).EnsureVisible
[解决办法]
数据库的记录的Key值用作Nodes的Key值(如果数据库Key值为数值类型,加入一个特定字符转换字串)
更新前,记住当前节点的key值
sPrevKey=tvCodeItems.SelectedItem.Key
刷新操作
’刷新后
tvCodeItems.Nodes(sPrevkey).Selected = True
tvCodeItems.Nodes(sPrevkey).EnsureVisible
tvCodeItems.setcocus