C# Windows 具有多个容器的表单滚动条

C# Windows Form Scrollbars with multiple containers

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

等等。现在,pnlParent 有 dock=fill,而 child 面板是 dock=top。所有 pnlXTitle 面板都有触发 expanding/collapsing 行为的按钮,方法是将它们各自的面板正下方设置为 enabled=visible=false。

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

在上述所有示例中,所有其他面板和用户控件的 AutoScroll=false。从我目前所读的内容来看,我担心 dock=top 设置可能会干扰水平滚动条的行为。我可以通过使用 AutoScrollMinSize 强制它显示和工作,但面板的大小不同,这让人觉得这更像是一个 hack,而不是一个正确的解决方案。

通过搜索,我发现之前有很多讨论围绕 Windows 表单和滚动条展开,但我没有找到足够具体的内容,我觉得我可以自信地确定我的应用程序的必要方向。如果您能分享任何信息,我将不胜感激,这些信息可以阐明为什么滚动条无法按预期工作以及如何补救。

谢谢!

您遇到的问题与停靠调整控件大小以水平适应表单的方式有关。

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

此行为是设计使然。