C# 如何在Windows窗体中获取树视图的完整大小?

C# 如何在Windows窗体中获取树视图的完整大小?,c#,winforms,treeview,C#,Winforms,Treeview,我在TreeView中没有“自动调整大小”选项,但我需要知道对象的全高和全宽是多少。我只能定义TreeView面板的大小,当内容与参考大小重叠时,它会显示滚动条 有没有办法知道显示的内容到底有多大 谢谢如果您想知道内容区域的绝对底部(仅扩展的部分),则可以使用Nodes属性和Bounds属性来获取可见高度 TreeNode tn = tv.Nodes[tv.Nodes.Count - 1]; while(tn.IsExpanded) tn = tn.Nodes[tn.Nodes.Coun

我在TreeView中没有“自动调整大小”选项,但我需要知道对象的全高和全宽是多少。我只能定义TreeView面板的大小,当内容与参考大小重叠时,它会显示滚动条

有没有办法知道显示的内容到底有多大


谢谢

如果您想知道内容区域的绝对底部(仅扩展的部分),则可以使用Nodes属性和Bounds属性来获取可见高度

TreeNode tn = tv.Nodes[tv.Nodes.Count - 1];
while(tn.IsExpanded)
    tn = tn.Nodes[tn.Nodes.Count - 1];
return tn.Bounds.Bottom;

只需确保进行适当的错误检查(TreeView实际上有节点等)。至于宽度,我记不清我是怎么做到的。但是,您可能能够使用TreeView的Bounds属性本身(可能需要一些测试)。我也遇到过类似的情况,我没有自动调整树视图的大小,但它包含在面板中并填充停靠,因此我需要通过在展开/折叠时调整树视图的大小来处理滚动条。

如果您想知道内容区域的绝对底部(仅是展开的内容),然后可以将Nodes属性与Bounds属性一起使用,以获得可见高度

TreeNode tn = tv.Nodes[tv.Nodes.Count - 1];
while(tn.IsExpanded)
    tn = tn.Nodes[tn.Nodes.Count - 1];
return tn.Bounds.Bottom;

只需确保进行适当的错误检查(TreeView实际上有节点等)。至于宽度,我记不清我是怎么做到的。但是,您可能能够使用TreeView的Bounds属性本身(可能需要一些测试)。我也遇到过类似的情况,我没有自动调整树状视图大小,但它包含在面板中并填充固定,因此我需要通过在展开/折叠时调整树状视图的大小来处理滚动条。

事实上,这正是我的情况!我会试试这个,然后带着反馈回来。现在谢谢你!我不记得你是否需要添加每个底边,但至少这会让你走上正确的轨道。我没有完全使用你的解决方案,但我不会把我的解决方案放在这里,因为它确实针对我的情况,但我使用“边界”数据来获取所有高度和宽度,用嵌套LINQ寻找最大值。谢谢你澄清这一点!事实上,这正是我的处境!我会试试这个,然后带着反馈回来。现在谢谢你!我不记得你是否需要添加每个底边,但至少这会让你走上正确的轨道。我没有完全使用你的解决方案,但我不会把我的解决方案放在这里,因为它确实针对我的情况,但我使用“边界”数据来获取所有高度和宽度,用嵌套LINQ寻找最大值。谢谢你澄清这一点!