只有水平滚动条应该出现,但是垂直和水平滚动条都出现了。

3
我有这样的情况,当我将Form水平缩小时,会出现水平和垂直ScrollBar。我创建了一个新的WinForms项目来复制这种行为,以下是我使用的设置:
  1. TabControl添加到Form中,将Dock设置为Fill
  2. TableLayoutPanel添加到TabPage
  3. 设置DockFill,使用一行和一列,将AutoScroll设置为`true
  4. 将行和列大小设置为AutoSize
  5. Label添加到TableLayoutPanel中,将其文本设置为某些长文字
  6. 运行应用程序,将Form水平缩小
  7. 注意到出现水平和垂直ScrollBar
这不是一个重大问题,但感觉有点不正确,而且看起来很烦人。我觉得有些东西没有正确地调整大小。我猜测是水平Scrollbar出现了,触发了TableLayoutPanelScrollBars而不是将TableLayoutPanel缩小以适应新的垂直空间。
我也尝试了在选项卡页面上使用AutoScroll设置为true,并得到了相同的结果。
非常感谢您的帮助。

1
这是非常正常的情况。由于您将窗口缩窄了,所以水平滚动条出现了。 它自己占用了垂直空间,现在垂直方向上可用的客户区空间不足,因此垂直滚动条也会出现。使用SystemInformation类查找滚动条的大小,以便您可以添加额外的空间来避免这种情况。或者,您也可以让用户去调整滚动条。 - Hans Passant
1个回答

7
你的猜测是正确的。只要客户区没有足够的空间来显示所有控件,就会出现滚动条,可以是垂直的、水平的或两者都有。
为了避免这种情况,可以使用 SystemInformation 来获取滚动条信息,并为你的控件添加额外的 padding。例如,要隐藏水平滚动条,只需执行以下操作:
var vertScrollWidth = SystemInformation.VerticalScrollBarWidth;

tableLayoutPanel.Padding = new Padding(0, 0, vertScrollWidth, 0);

抱歉,有一段时间没回复了。我能够在测试WinForms应用程序中使用这个来解决一般性问题,但我认为我将避免为我的应用程序自己处理调整大小事件。尽量保持简单! - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接