当前位置: 首页 > 知识库问答 >
问题:

动态树景高度

戚兴思
2023-03-14

我的treeview是折叠的,当我加载它,所以它是大约100x150像素大。当它展开时,我希望treeview显示所有展开的节点。

为了做到这一点,窗体需要随着treeview变大而变大,对吗?我是VB.NET的新手,我试图在treeview中找到一个“growonly”属性,但我找不到一个...有人这样做过吗?

共有1个答案

殳宸
2023-03-14

添加AfterExpload和AfterConsollabe,使treeview对节点的展开/折叠做出反应。我为这个示例硬编码了填充,但本质上这只是用于调整窗体大小的菜单、按钮等的高度。

Private Sub Rapports_tvAllReports_AfterExpand(sender As Object, e As System.Windows.Forms.TreeViewEventArgs) Handles Rapports_tvAllReports.AfterExpand, Rapports_tvAllReports.AfterCollapse
    Dim Padding As Integer = 140 'Customize this, basically accounts for all buttons or menus included in the form which nests the treeview
    Dim TreeViewHeight As Integer = GetOpenedNodesRecursively(Rapports_tvAllReports)

    If formWindow = FormWindowState.Normal Then Me.Size = New Size(345, TreeViewHeight + Padding)
End Sub

我们所做的就是增加Y并将新的Y设置为形式。为了使treeview与窗体一起正确调整大小,请将其锚定到顶部和底部。

这个函数将通过根节点并在打开的节点上调用递归函数。

Private Function GetOpenedNodesRecursively(ByVal aTreeView As TreeView)
    Dim Y As Integer = 0

    'Go through each node of the treeview (first level)
    For Each n As TreeNode In aTreeView.Nodes
        Y += Rapports_tvAllReports.ItemHeight

        'If the user expands a node, recursively increment the Y
        If n.IsExpanded Then Y += RecursiveYIncrement(n)
    Next

    Return Y
End Function
Private Function RecursiveYIncrement(ByVal n As TreeNode)
    Dim Y As Integer = 0

    'Go through each node of the treeview (first level)
    For Each aNode As TreeNode In n.Nodes
        Y += Rapports_tvAllReports.ItemHeight

        'If the user expands a node, recursively increment the Y
        If aNode.IsExpanded Then Y += RecursiveYIncrement(aNode)
    Next

    Return Y
End Function
 类似资料:
  • 问题内容: 在html模板中,我具有带有动态图像的这种样式: 可以在网络浏览器和android浏览器中使用。但是,使用“ style =”动态显示的背景图像不会在iPad上显示。 我总是可以使用img标签创建动态图像,但是我正在寻找iPad的样式/ css解决方案。 问题答案: 改用 要么

  • 问题内容: 我在使用primefaces树实现实现动态树结构时遇到了一些麻烦。在primeface提供的展示柜中,代码的结构如下所示。但是,这是非常静态的。我试图弄清楚如何处理从数据库中获取的数据,在编译时树的深度是未知的。 我以为我可能需要某种递归方法来实现此目的,但我无法完全理解实现的样子。 有什么想法吗? 以下是primefaces的示例代码 问题答案:

  • 高动态范围 作者|OpenCV-Python Tutorials 编译|Vincent 来源|OpenCV-Python Tutorials 目标 在本章中,我们将 了解如何根据曝光顺序生成和显示HDR图像。 使用曝光融合来合并曝光序列。 理论 高动态范围成像(HDRI或HDR)是一种用于成像和摄影的技术,可以比标准数字成像或摄影技术重现更大的动态亮度范围。虽然人眼可以适应各种光照条件,但是大多数

  • 问题内容: 在Web应用程序中,我的页面包含一个DIV,该DIV的自动宽度取决于浏览器窗口的宽度。 我需要该对象的自动高度。DIV从顶部屏幕开始约300像素,其高度应使其延伸到浏览器屏幕的底部。我有一个容器DIV的最大高度,所以div的最小高度必须是最小。我相信我可以将其限制在CSS中,并使用Javascript处理DIV的大小。 我的JavaScript不够理想。我可以编写一个简单的脚本来为我做

  • 我想用和JasperSoft Studio6.5生成一个pdf文件。 在我的文件中,我有两个级别的子报告。 我对这份报告的布局有更多的困难。此报表包含(1°子报表)一个动态文件列表(带有描述字段,在某些情况下非常冗长)。 “说明”字段 第二个子报告中所列行的编号 如果2°子报告比第一个报告高,我有一个问题,如果我有一个页面改变。因此,如果第一个子报告高于第二个子报告,则第二个子报告不会跟随第一个子

  • DynamicHeights是一个动态表格元素高度(动态TableViewCell)的例子。实际应用场景在iOS开发中会经常遇到不规律的TableViewCell,往往需要根据内容的多少而动态调整这些Cell的大小。在http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/ 中,有详细的解说开发的流程以及这么处理的原因。里面的大