我有一个TableLayoutPanel,里面有几个TableLayoutPanels。数量会动态变化,并且几乎总是太多而无法容纳在表单中。我需要它具有滚动条,以便我可以查看整个组件。
我已经尝试将主面板上的autoscroll属性设置为true并将其停靠和/或设置最大大小。控制器要做的是,尝试将所有面板都安装在窗体内,因此更改其内部组件的大小并将它们全部挤压在一起,而不是创建滚动条来滚动我的面板。
你们知道我可能在做什么错吗?
谢谢。
Jose
PS:我正在使用VS 2010
有一天,我遇到了同样的问题,发现问题是我在TableLayoutPanel上设置了“ MinimumSize”。不管Dock和/或Anchor约束如何,这都会使控件保持最低高度,从而使AutoScroll功能无法正常工作。由于该功能是基于对控件的所有子控件的Y坐标进行简单检查而得出的,因此该控件没有出现滚动条,尽管TableLayoutPanel的子控件由于其父控件而“消失”了剪辑区域。
换句话说,请检查TableLayoutPanel的MinimumSize属性并确保其为空。
也许this会有所帮助。
如果仍然无法使用,请尝试放置一个面板,然后将tableLayoutPanel放入该面板。将面板的autoScroll属性设置为true。
我在我的项目中发生了同样的事情。我所有的控件都压缩在TableLayoutPanel中。就我而言,我将许多控件呈现为ColumnStyle.Percent。我需要将其切换为ColumnStyle.Autosize。
我假设您也设置了这些属性,但以防万一我的TableLayoutPanels也使用以下设置:
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
AutoScroll = true;
最新答案,但是最近我一直在与复杂的布局作斗争,并且一直在寻找一种解决方案,以使在具有太多字段的屏幕上进行滚动操作。老实说,更好的设计应该可以在99%的时间内避免出现此问题,但有时您的双手会被绑住。
问题
问题似乎是,如果您对多个网格,组和面板嵌套太深,它们将停止向父控件正确报告其内容已超出当前屏幕的大小。实际上,问题可能在于控件都设置为停靠填充,并且do都适合其父控件,因此顶层控件不知道其great-great-great-great-grandchild的内容控件不合适。
解决方案>>
解决此问题的技巧似乎是手动强制最上面的面板以某个最小尺寸滚动:
MainPanel.AutoSize = true;
MainPanel.AutoScrollMinSize = new Size(400, 500);
TableLayoutPanel
滚动充满了错误。使它正常工作的解决方案是here。