treeview怎样得到展开树形时高度?就是我想让treeview 这个控件展开结点,不出现
滚动条,高度随着结点展开的数而增大,各位高手有啥好办法??

解决方案 »

  1.   

    treeview怎样得到展开树形时高度?就是我想让treeview 这个控件展开结点,不出现
    滚动条,高度随着结点展开的数而增大这种方法不可取。这样会有闪烁现象。
      

  2.   

    这个功能有什么用啊,如果节点多了超过屏幕一样看不见的。
    方法一:
    高度变的极小,然后做个循环,高度逐渐增加,直到TreeView的GetVisibleCount方法结果=TreeView.Nodes.Count;
    方法二:
    以字体高度换算值与图标高度值之间的大值进行计算而得,这样做的时候要考虑行间空隙略做调整。
      

  3.   

    谢谢各位,主要是界面,treeview 的滚动条不好看,想自己做一个滚动条,就要获得高度
      

  4.   


    Private Sub Command1_Click()
        TreeView1.Nodes(0).Expanded = True
    End SubPrivate Sub Form_Load()
        TreeView1.Nodes.Add , "item1", "item1", "item1"
            TreeView1.Nodes.Add "item1", tvwChild, "item11", "item11"
        TreeView1.Nodes.Add , "item2", "item2", "item2"
            TreeView1.Nodes.Add "item2", tvwChild, "item21", "item21"
            TreeView1.Nodes.Add "item2", tvwChild, "item22", "item22"
            TreeView1.Nodes.Add "item2", tvwChild, "item23", "item23"
        TreeView1.Nodes.Add , "item3", "item3", "item3"
    End SubPrivate Sub TreeView1_Collapse(ByVal Node As MSComctlLib.Node)
        TreeView1.Height = TreeView1.Height - getChildsCount(Node) * 250
    End SubPrivate Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
        TreeView1.Height = TreeView1.Height + getChildsCount(Node) * 250
    End SubPrivate Function getChildsCount(ByRef Node As MSComctlLib.Node) As Integer
        Dim i As Integer
        Dim childCount As Integer
        For i = 1 To TreeView1.Nodes.Count
            If Not getNoteParent(TreeView1.Nodes(i)) Is Nothing Then
                If getNoteParent(TreeView1.Nodes(i)).Key = Node.Key Then
                    childCount = childCount + 1
                End If
            End If
        Next
        getChildsCount = childCount
    End FunctionPrivate Function getNoteParent(ByRef Node As MSComctlLib.Node) As MSComctlLib.Node
        On Error GoTo setNothing
        Set getNoteParent = Node.Parent
        Exit Function
    setNothing:
        Set getNoteParent = Nothing
    End Function