滚动条TableLayoutPanel c#

时间:2011-06-15 08:54:18

标签: c# scrollbar tablelayoutpanel

我有一个TableLayoutPanel,里面有几个TableLayoutPanel。数量会动态变化,并且几乎总是太多而无法放入表单中。我需要它有一个滚动条,以便我可以查看整个组件。

我尝试将主面板上的autoscroll属性设置为true并将其停靠和/或设置最大大小。而控制器的作用是尝试在窗体内部安装所有Panel,从而改变其内部组件的大小并将它们全部挤压在一起,而不是创建滚动条来滚动我的面板。

你们知道我可能做错了什么吗?

感谢。

PS:我正在使用VS 2010

5 个答案:

答案 0 :(得分:2)

我有一天遇到同样的问题,发现问题是我将“MinimumSize”设置为TableLayoutPanel。这导致控件保持最小高度,无论Dock和/或Anchor约束如何,都会阻止AutoScroll功能正常工作。由于该功能基于对该控件高度的控件的所有子控件的Y坐标的简单检查,因此尽管TableLayoutPanel的子控件由于其父控件而“消失”,但滚动条仍未出现。剪辑区。

换句话说,检查TableLayoutPanel的MinimumSize属性并确保它为空。

答案 1 :(得分:1)

也许this会有所帮助。

如果它仍然不起作用,请尝试放置一个面板,然后将tableLayoutPanel放入该面板。设置为true面板的autoScroll属性。

答案 2 :(得分:1)

我的项目也发生了同样的事情。我的所有控件都被压缩在TableLayoutPanel中。在我的例子中,我将许多控件渲染为ColumnStyle.Percent。将其切换为ColumnStyle.Autosize是我需要的修复。

我假设您也设置了这些属性,但以防我的TableLayoutPanels也使用以下设置:

AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
AutoScroll = true;

答案 3 :(得分:1)

迟到的答案,但我最近一直在与复杂的布局进行斗争,并且正在寻找一种解决方案,让我的滚动工作在一个有太多字段的屏幕上。老实说,更好的设计应该在99%的时间内避免这个问题,但有时候你的手只会被束缚。

问题

问题似乎是,如果您使用多个网格,组和面板进行过深的嵌套,他们会停止向父控件正确报告其内容已超出当前屏幕的大小。实际上,问题可能是控件都设置为停靠填充并且执行适合其父控件,因此顶级控件并不知道其伟大的内容 - 伟大的孙子控制不适合。

<强>解决方案

修复此问题的技巧似乎是手动强制最顶层的面板以某个最小尺寸滚动:

MainPanel.AutoSize = true;
MainPanel.AutoScrollMinSize = new Size(400, 500);

答案 4 :(得分:0)

TableLayoutPanel滚动中充满了错误。 使它正常运行的解决方案是here