带有多个容器的C#Windows窗体滚动条

时间:2015-07-06 19:46:13

标签: c# .net winforms horizontal-scrolling

我很难让垂直和水平滚动条在我的情况下按照需要运行。有问题的页面有多个部分可以展开和折叠(一次只能展开一个部分)。为了尝试演示我的页面布局,我将使用嵌套,也许是一个愚蠢的命名约定尽可能清晰:

  • ucParent
    • pnlParent
      • pnl1Title
      • PNL1
        • UC1
      • pnl2Title
      • PNL2
        • UC2
      • pnl3Title
      • pnl3
        • uc3-1
        • uc3-2
        • uc3-3

等等。现在,pnlParent有dock = fill,而子面板是dock = top。所有pnlXTitle面板都有按钮,通过将各自的面板直接设置为enabled = visible = false来触发展开/折叠行为。

我希望在调整窗口大小和隐藏内容时根据需要显示水平和垂直滚动条,但是我没有成功引出此行为。

  • 使用ucParent.AutoScroll = false和pnlParent.AutoScroll = true时,只显示垂直滚动条。
  • 使用ucParent.AutoScroll = true和pnlParent.AutoScroll = false时,滚动条都不起作用。
  • 如果ucParent.AutoScroll = true且pnlParent.AutoScroll = true,则仅显示垂直滚动条。

在上述所有示例中,所有其他面板和用户控件的AutoScroll = false。从我到目前为止所读到的,我担心dock = top设置可能会干扰水平滚动条的行为。我可以使用AutoScrollMinSize强制它显示和工作,但是面板的大小不同,这使得这种方式更像是一个黑客而不是一个合适的解决方案。

通过我的搜索,我发现了许多以前关于Windows窗体和滚动条的讨论,但我没有找到任何具体的内容,我觉得我可以自信地确定我的应用程序的必要方向。我非常感谢你能分享的任何信息,这些信息可以说明为什么滚动条不能正常工作以及如何解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

您遇到的问题与对接调整控件大小以在表单中水平放置的方式有关。

将控件停靠在其容器顶部时,会将其拉伸以适合容器内部。因此,它的任何部分都不会落在容器外面,也不需要显示水平滚动条。这就是您的滚动条没有出现的原因。

此行为是设计使然。