如何计算和更改树视图宽度

Ham*_*yan 3 c# treeview user-interface winforms

如何TreeView在扩展节点时更改其宽度,以便节点的标签完全显示.

首先我设置了 DrawMode = OwnerDrawAll;

然后处理事件DrawNode和处理程序

e.DrawDefault = true;
currentWith_ = Math.Max(currentWith_, e.Node.Bounds.Right);
Run Code Online (Sandbox Code Playgroud)

然后用AfterExpand控件设置控件.但每次都不行.有时不更改或更改不正确.

如何纠正这个问题.提前致谢.

Ria*_*Ria 5

尝试这个,这成功地工作:

private void treeViewAfterExpand(object sender, TreeViewEventArgs e)
{
    int maxRight = treeView.ClientSize.Width;

    if(e.Node.Nodes != null)
        foreach (TreeNode node in e.Node.Nodes)
        {
            maxRight = Math.Max(maxRight, node.Bounds.Right);
        }

    treeView.ClientSize = new Size(maxRight, treeView.ClientSize.Height);
}
Run Code Online (Sandbox Code Playgroud)