treeview 有滚动条位置的相关属性吗?因为我在将滚动条全部展开以后.
For Each Node In tree1.Nodes
Node.Expanded = True
Next结果treeview 滚到了最下方.而不是从最上方开始的.我想让它滚到最上方.另外一个问题.我想在每次重新读取treeview前 .记录滚动条的位置.然后刷新完了以后.treeview重新移动到原来的位置.而不是从开头..请指教.总结就是:
         1).treeview的滚动条位置获得
         2).treeview的滚动条位置的设定.
2个问题

解决方案 »

  1.   

    让指定的node可见就行了,用node.EnsureVisible来控制可见
      

  2.   

    可见有用吗,node.selected也许有点效果吧
      

  3.   

    测试结果:
    1:按照楼主这样的展开以后,上下滚动条在最上面,选择的是第一个NODE
    2:定位滚动条的位置,可以用定位选择的NODE来,设置NODE的SELECTED属性Private Sub Command1_Click()
    FillTvw
    TreeView1.Nodes(4).Selected = True
    End SubPrivate Sub Form_Load()
    FillTvw
    TreeView1.Nodes(4).Selected = True
    End Sub
    Private Sub FillTvw()
    TreeView1.Nodes.Clear
    TreeView1.Nodes.Add , , "A", "A"
    TreeView1.Nodes.Add , , "B", "B"
    TreeView1.Nodes.Add "A", tvwChild, "C", "C"
    TreeView1.Nodes.Add "A", tvwChild, "D", "D"
    TreeView1.Nodes.Add "C", tvwChild, "E", "1"
    TreeView1.Nodes.Add "C", tvwChild, "F", "2"
    TreeView1.Nodes.Add "F", tvwChild, "G", "3"
    TreeView1.Nodes.Add "F", tvwChild, "H", "4"
    TreeView1.Nodes.Add "F", tvwChild, "i", "6"Dim node As nodeFor Each node In TreeView1.Nodes
    node.Expanded = True
    Next
      

  4.   


    TreeView1.Nodes.Item(1).Selected = True
    TreeView1.Nodes.Item(1).EnsureVisible 
      

  5.   

    dim MyListIndex1 as  Long
     MyListIndex1 = Node.Index''记录位置
    将 MyListIndex1保存
    读取MyListIndex1后,定位:TreeView1.Nodes.Item(MyListIndex1).Selected = True
    TreeView1.Nodes.Item(MyListIndex1).EnsureVisible 
      

  6.   

    首先谢谢各位!4楼,6楼的大大,问题是很难知道知道具体第一个节点的key的.因为是动态加载的.我的节点是多轮循环.动态一组组的加载上去的.而且每一轮循环不一定加载同一层级.很可能第一个循环都没有加任何节点.我无法判断哪个是第一个节点.我只好找了种笨办法.先加一个无意义的第一节点.最后加完了之后.ensureVisible它,再remove它..呵呵. 想问有没有第一个节点的属性之类的?另外一点,ensureVisible这个函数,好是好.但是造成没有必要的滚动.而且如果有水平的滚动条的话.水平的也会滚动.而我只想垂直的滚动.水平一律不滚动.这个是无法做到的.如有这样的情况:如果要ensureVIsible的子项很长, 结果滚完了之后.滚到最最右边去了.就像记事本一样.全都滚到最右边.只能看见一行不完整的数据了.界面尚不太友好.有没有类似api之类的能自如操纵滚动条的呢.先谢谢各位了.