我有一种情况,当我水平收缩我的 Form
时,水平和垂直的 ScrollBar
都会出现。我创建了一个新的 WinForms 项目来复制该行为,这是我使用的设置。
- 在
Form
中添加一个TabControl
,将Dock
设置为Fill
- 将
TableLayoutPanel
添加到TabPage
- 设置
Dock
为Fill
,使用一行一列,设置AutoScroll
为`true - 将行和列的大小设置为
AutoSize
- 向
TableLayoutPanel
添加一个Label
,将其文本设置为较长的内容 - 运行应用,水平收缩
Form
- 注意水平和垂直的
ScrollBar
都出现了
这不是什么大问题,但感觉有点破损,过一会儿再看会很烦人。我觉得有些东西没有正确调整大小。我的猜测是水平 Scrollbar
出现了,它触发了 TableLayoutPanel
的 ScrollBars
而不是将 TableLayoutPanel
缩小到适应新的垂直空间。
我也尝试过将标签页的 AutoScroll
设置为 true
,并得到了相同的结果。
如有任何见解,我们将不胜感激。
编辑:
我测试了相同的设置,只用了一个 Panel
,Dock
设置为 Fill
,AutoSize
打开并设置到GrowAndShrink
,AutoScroll
上。相同的步骤触发水平的,但不是垂直的 ScrollBar
。
最佳答案
你的猜测是正确的。只要客户区没有足够的空间来显示所有控件,就会出现垂直或水平滚动条,甚至两者都会出现。
要避免这种情况,请使用 SystemInformation
获取滚动条信息并向您的控件添加额外的填充。例如,要隐藏单杠,只需这样做:
var vertScrollWidth = SystemInformation.VerticalScrollBarWidth;
tableLayoutPanel.Padding = new Padding(0, 0, vertScrollWidth, 0);
关于c# - 当只有水平滚动条应该出现时,垂直和水平滚动条出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25342096/