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

Mic*_*ael 3 c# scroll resize winforms

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

  1. 添加TabControlForm,设置DockFill
  2. 添加TableLayoutPanelTabPage
  3. 设置DockFill,使用一行和一列,设置AutoScroll为"true"
  4. 将行和列大小设置为 AutoSize
  5. a添加LabelTableLayoutPanel,其文本设置为东西长
  6. 运行应用程序,Form水平收缩
  7. 请注意,水平和垂直ScrollBar都会出现

这不是一个主要问题,但感觉有点破碎,一段时间后看起来很烦人.我觉得有些东西没有正确调整大小.我的猜测是水平Scrollbar出现,触发了TableLayoutPanels ScrollBars而不是缩小TableLayoutPanel以适应新的垂直空间.

我已经尝试使用标签页的AutoScroll设置true,并得到了相同的结果.

任何见解将不胜感激.


编辑:

我测试了相同的设置只是一个Panel,Dock设置Fill,AutoSize并设置为GrowAndShrink,AutoScroll上.相同的步骤触发水平,但不垂直ScrollBar.

nev*_*ets 6

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

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

var vertScrollWidth = SystemInformation.VerticalScrollBarWidth;

tableLayoutPanel.Padding = new Padding(0, 0, vertScrollWidth, 0);
Run Code Online (Sandbox Code Playgroud)