C# 当仅显示水平滚动条时,会显示垂直滚动条和水平滚动条
我有一种情况,当我水平收缩我的C# 当仅显示水平滚动条时,会显示垂直滚动条和水平滚动条,c#,winforms,scroll,resize,C#,Winforms,Scroll,Resize,我有一种情况,当我水平收缩我的表单时,同时会出现水平和垂直的滚动条。我创建了一个新的WinForms项目来复制该行为,下面是我使用的设置 将选项卡控件添加到表单,将停靠设置为填充 将表格布局面板添加到选项卡页面 将Dock设置为Fill,使用一行一列,将AutoScroll设置为'true' 将行和列大小设置为AutoSize 将标签添加到表格布局面板,将其文本设置为长文本 运行应用程序,水平收缩表单 请注意,同时出现了一个水平和垂直的滚动条 这不是一个大问题,但它感觉有点破碎,是相当恼人的一段
表单
时,同时会出现水平和垂直的滚动条
。我创建了一个新的WinForms项目来复制该行为,下面是我使用的设置
选项卡控件
添加到表单
,将停靠
设置为填充
表格布局面板
添加到选项卡页面
Dock
设置为Fill
,使用一行一列,将AutoScroll
设置为'true'AutoSize
标签
添加到表格布局面板
,将其文本设置为长文本表单
滚动条
滚动条
,它触发了表格布局面板
的滚动条
,而不是收缩表格布局面板
,以适应新的垂直空间
我也尝试过使用选项卡页面的AutoScroll
设置为true
,得到了相同的结果
如有任何见解,将不胜感激
编辑:
我测试了相同的设置,只使用了一个
面板
,停靠
设置为填充
,自动调整大小
,并设置为增长和收缩
,自动滚动
打开。同样的步骤会触发水平滚动条,但不会触发垂直滚动条。您的猜测是正确的。只要客户端区域没有足够的空间显示所有控件,就会出现一个垂直或水平滚动条,甚至两个滚动条
要避免这种情况,请使用SystemInformation
获取滚动条信息,并为控件添加额外的填充。例如,要隐藏水平条,只需执行以下操作:
var vertScrollWidth = SystemInformation.VerticalScrollBarWidth;
tableLayoutPanel.Padding = new Padding(0, 0, vertScrollWidth, 0);
这很正常。出现水平滚动条是因为您使窗口太窄。它本身占用了垂直空间,现在也没有足够的垂直客户区可用空间。因此,垂直滚动条也会出现。使用SystemInformation类找出滚动条的大小,以便可以添加额外的空间来避免这种情况。或者让用户自己决定。对不起,我刚才想回到这里。我可以用它来解决WinForms测试应用程序中的一般问题,但我想我会避免自己为我的应用程序处理大小调整事件。尽量保持简单!