Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当仅显示水平滚动条时,会显示垂直滚动条和水平滚动条_C#_Winforms_Scroll_Resize - Fatal编程技术网

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测试应用程序中的一般问题,但我想我会避免自己为我的应用程序处理大小调整事件。尽量保持简单!