3

ご挨拶、

ノードが折りたたまれたり開かれたりするときはいつでも、ツリービューの幅を最大またはその中の最も長いツリーノードのサイズに設定する方法を探しています。

clientsizeを使ってみましたが、うまくいかないようです。どのノードが最も長いかを確認し、TreeView.Widthをそのサイズに設定する別の方法はありますか?

4

1 に答える 1

3

ネットでさらに検索したところ、次の方法を見つけました。

private const int GWL_STYLE = -16;
private const int WS_VSCROLL = 0x00200000;
private const int WS_HSCROLL = 0x00100000;


[DllImport("user32.dll", ExactSpelling = false, CharSet = CharSet.Auto)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);

と:

//tree = instance of a treeview
tree.AfterExpand += (s, ea) =>
{
    int style = GetWindowLong(tree.Handle, GWL_STYLE);
    while ((style & WS_HSCROLL) != 0)
    {
        tree.Width++;
        style = GetWindowLong(tree.Handle, GWL_STYLE);
    }
};

もちろんボタンにも使えます!

于 2011-05-10T13:34:03.707 に答える