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