c# - 当只有水平滚动条应该出现时,垂直和水平滚动条出现

标签 c# winforms scroll resize

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

  1. Form中添加一个TabControl,将Dock设置为Fill
  2. TableLayoutPanel添加到TabPage
  3. 设置DockFill,使用一行一列,设置AutoScroll为`true
  4. 将行和列的大小设置为AutoSize
  5. TableLayoutPanel 添加一个Label,将其文本设置为较长的​​内容
  6. 运行应用,水平收缩Form
  7. 注意水平和垂直的 ScrollBar 都出现了

这不是什么大问题,但感觉有点破损,过一会儿再看会很烦人。我觉得有些东西没有正确调整大小。我的猜测是水平 Scrollbar 出现了,它触发了 TableLayoutPanelScrollBars 而不是将 TableLayoutPanel 缩小到适应新的垂直空间。

我也尝试过将标签页的 AutoScroll 设置为 true,并得到了相同的结果。

如有任何见解,我们将不胜感激。


编辑:

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

最佳答案

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

要避免这种情况,请使用 SystemInformation 获取滚动条信息并向您的控件添加额外的填充。例如,要隐藏单杠,只需这样做:

var vertScrollWidth = SystemInformation.VerticalScrollBarWidth;

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

关于c# - 当只有水平滚动条应该出现时,垂直和水平滚动条出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25342096/

相关文章:

c# - MVC1000 使用 IHtmlHelper.Partial 可能会导致应用程序死锁。考虑使用 <partial> 标签助手或 IHtmlHelper.PartialAsync

c# - SignalR 无法启动连接

c# - F10 键未被捕获

c# - 替换 Xml 节点/元素的内部文本

android - 扩展 View 不滚动

c++ - Qt滚动大图

c# - 数据库设计 Entity Framework 中的导航属性

c# - Web API 操作参数间歇性为空

c# - 在 C# 中检测 wifi 连接

javascript - 更改页面滚动上的背景图像以创建动画? Canvas 更有效率吗?