问候,
我正在寻找一种方法,只要节点被折叠或打开,就可以将树视图的宽度设置为最大值,或者设置为最长的treenode的大小。
我尝试过使用clientize ..但这似乎不起作用。 是否有不同的方法来检查哪个节点最长并将TreeView.Width设置为该大小?
答案 0 :(得分:1)
在网上搜索了一些后,我发现了这种方式:
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);
}
};
当然,您也可以在按钮上使用它!