SplitContainer面板自动适配内容

本文关键字:SplitContainer | 更新日期: 2023-09-27 18:10:38

我正在寻找非常简单的功能,但是我找不到它(令人惊讶的是,我找不到其他人问这个问题)。

我有两个面板拆分容器-非常简单的设置,导航树视图在左边,ListView与项目在右边。

现在,我想拥有的是拆分器自动固定在位置上,当左边的一切(树视图)是可见的,水平滚动条不显示。我不知道道具的大小(但我知道它只有1级深)。比如"自动增长,然后修复分配器"。当然我不是第一个寻找这个功能的人:)

知道如何实现这一点吗?

谢谢,马丁

SplitContainer面板自动适配内容

这是相当麻烦的,滚动条可能会在用户展开和折叠节点时再次出现和消失。您只能测量扩展节点的大小。这在你使用的UI中很可能是这样的。在这种情况下,这段代码应该可以解决您的问题:

Private Shared Function GetMaxNodeWidth(ByVal nodes As TreeNodeCollection, ByVal width As Integer) As Integer
    For Each node As TreeNode In nodes
        width = Math.Max(width, node.Bounds.Right)
        width = GetMaxNodeWidth(node.Nodes, width)
    Next
    Return width
End Function
Public Shared Function ResizeTreeView(ByVal tree As TreeView) As Integer
    Dim width = GetMaxNodeWidth(tree.Nodes, 0)
    tree.ClientSize = New Size(width, tree.ClientSize.Height)
    return tree.Width
End Sub

在填充控件后调用ResizeTreeView()。示例用法:

    TreeView1.Nodes.Add("Customers")
    '' etc...
    SplitContainer1.SplitterDistance = ResizeTreeView(TreeView1)