3

如何让TreeView扩展节点时改变它的宽度,使节点的标签完全显示出来。

首先我设置DrawMode = OwnerDrawAll;

然后处理事件DrawNodeandin处理程序

e.DrawDefault = true;
currentWith_ = Math.Max(currentWith_, e.Node.Bounds.Right);

然后在AfterExpand设置控件。但不是每次都有效。有时 with 没有更改或更改不正确。

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

4

2 回答 2

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);
}
于 2012-07-11T10:08:45.947 回答
1

Ria 给出的解决方案有效,但在构造函数中扩展时无效。扩展加载事件而不是构造函数使其工作。(无法评论,因为低于 50 分。)

于 2015-03-28T22:16:13.593 回答