首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问一个关于treeview定位的有关问题

2012-04-14 
请教一个关于treeview定位的问题我的程序里treeview结构是通过数据库生成的,所以添加修改删除移动都是通过

请教一个关于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什麼方法
[解决办法]

VB code
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

热点排行