3

TreeViewノードのラベルが完全に表示されるように、ノードを展開するときに幅を変更する方法。

まず、DrawMode = OwnerDrawAll;

次に、イベントとDrawNodeハンドラーを処理します

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 によって提供されたソリューションは機能しますが、コンストラクターで展開する場合は機能しません。コンストラクターの代わりに load イベントを展開すると、機能しました。(50点未満のためコメントできません。)

于 2015-03-28T22:16:13.593 に答える