只有水平应该出现垂直和水平滚动条

时间:2014-08-16 17:21:26

标签: c# winforms scroll resize

我的情况是,当我水平收缩Form时,会出现水平和垂直ScrollBar。我创建了一个新的WinForms项目来复制行为,这是我使用的设置。

  1. TabControl添加Form,将Dock设为Fill
  2. TableLayoutPanel添加到TabPage
  3. Dock设置为Fill,使用一行一列,将AutoScroll设置为“true
  4. 将行和列大小设置为AutoSize
  5. Label添加TableLayoutPanel,将其文字设置为长
  6. 运行应用程序,水平缩小Form
  7. 请注意水平和垂直ScrollBar出现
  8. 这不是一个主要问题,但感觉有点破碎,经过一段时间后看起来很烦人。我觉得有些东西没有正确调整大小。我的猜测是显示水平Scrollbar,触发TableLayoutPanel ScrollBars而不是缩小TableLayoutPanel以适应新的垂直空间。

    我已尝试使用标签页AutoScroll设置为true,并获得相同的结果。

    非常感谢任何见解。


    编辑:

    我测试了相同的设置,只有PanelDock设置为FillAutoSize打开并设置为GrowAndShrinkAutoScroll上。相同的步骤会触发水平,但不会触发垂直ScrollBar

1 个答案:

答案 0 :(得分:6)

你的猜测是正确的。只要客户区没有足够的空间来显示所有控件,就会出现垂直或水平甚至两者的滚动条。

要避免这种情况,请使用SystemInformation获取滚动条信息并为控件添加额外的填充。例如,要隐藏水平条,只需执行以下操作:

var vertScrollWidth = SystemInformation.VerticalScrollBarWidth;

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