How to make scrollbars appear in a resizable panel when the contained control is too big for it?
我正在开发Windows窗体应用程序(.NET 2.0,VS 2005)。 我有一个表单,该表单本质上包含一个使用以下表单动态调整大小的面板:
1 | this.panel1.Dock=DockStyle.Fill; |
该面板仅用作容器。 在运行时,将添加一个自定义控件:
1 2 3 | UserControl uc=new UserControl(); panel1.Controls.Add(uc); uc.Dock=DockStyle.Fill; |
由于此自定义控件具有最小尺寸要求,因此,如果滚动条太小而无法显示整个控件,则希望滚动条显示在包含面板上:
1 | this.panel1.AutoScroll=true; |
这是行不通的。 我试图使用Anchor属性而不是Dock属性来调整面板大小,但无济于事。
不要停靠您的用户控件。 请改用Anchor属性。 (锚定到所有四个方面)。
设置用户控件的MinimumSize属性
设置面板的AutoScrollMinSize属性
除非设置面板的AutoScrollMinSize属性,否则面板的滚动条不会出现。 将用户控件的Dock设置为Fill似乎会隐藏面板的滚动条。
在对话框形式的InitializeComponent之后,我做到了,它似乎起作用了:
1 | tableLayoutPanel1.AutoScrollMinSize = tableLayoutPanel1.GetPreferredSize(new Size(1, 1)); |
我桌上有一堆子面板。 所有行和列均设置为AutoSize。 由于某种原因,该控件不够智能,告诉滚动控件其首选大小。
Panel.AutoScroll = *真有效-现在! 我在面板和用户控制上都玩了上面的想法,最后将所有内容重置为默认值,在面板上设置了"自动滚动",然后……瞧! 不知何故它再次起作用...去想一下...