C# Windows 具有多个容器的表单滚动条
C# Windows Form Scrollbars with multiple containers
我很难让垂直和水平滚动条的行为都符合我的情况。有问题的页面有多个可以展开和折叠的部分(一次只能展开一个)。为了尝试演示我的页面布局,我将使用嵌套和愚蠢的命名约定来尽可能清晰:
- ucParent
- pnlParent
- pnl1标题
- pnl1
- uc1
- pnl2标题
- pnl2
- uc2
- pnl3标题
- pnl3
- uc3-1
- uc3-2
- uc3-3
等等。现在,pnlParent 有 dock=fill,而 child 面板是 dock=top。所有 pnlXTitle 面板都有触发 expanding/collapsing 行为的按钮,方法是将它们各自的面板正下方设置为 enabled=visible=false。
我希望在 window 调整大小并隐藏内容时根据需要显示水平和垂直滚动条,但是我没有成功引发此行为。
- 在 ucParent.AutoScroll=false 和 pnlParent.AutoScroll=true 的情况下,只有垂直滚动条存在。
- ucParent.AutoScroll=true 和 pnlParent.AutoScroll=false 滚动条都不起作用。
- ucParent.AutoScroll=true 和 pnlParent.AutoScroll=true 只有垂直滚动条存在。
在上述所有示例中,所有其他面板和用户控件的 AutoScroll=false。从我目前所读的内容来看,我担心 dock=top 设置可能会干扰水平滚动条的行为。我可以通过使用 AutoScrollMinSize 强制它显示和工作,但面板的大小不同,这让人觉得这更像是一个 hack,而不是一个正确的解决方案。
通过搜索,我发现之前有很多讨论围绕 Windows 表单和滚动条展开,但我没有找到足够具体的内容,我觉得我可以自信地确定我的应用程序的必要方向。如果您能分享任何信息,我将不胜感激,这些信息可以阐明为什么滚动条无法按预期工作以及如何补救。
谢谢!
您遇到的问题与停靠调整控件大小以水平适应表单的方式有关。
当您将控件停靠到其容器的顶部时,它会被拉伸以适合容器。因此,它的任何部分都不会落在容器之外,也不需要显示水平滚动条。这就是您的滚动条没有出现的原因。
此行为是设计使然。
我很难让垂直和水平滚动条的行为都符合我的情况。有问题的页面有多个可以展开和折叠的部分(一次只能展开一个)。为了尝试演示我的页面布局,我将使用嵌套和愚蠢的命名约定来尽可能清晰:
- ucParent
- pnlParent
- pnl1标题
- pnl1
- uc1
- pnl2标题
- pnl2
- uc2
- pnl3标题
- pnl3
- uc3-1
- uc3-2
- uc3-3
- pnlParent
等等。现在,pnlParent 有 dock=fill,而 child 面板是 dock=top。所有 pnlXTitle 面板都有触发 expanding/collapsing 行为的按钮,方法是将它们各自的面板正下方设置为 enabled=visible=false。
我希望在 window 调整大小并隐藏内容时根据需要显示水平和垂直滚动条,但是我没有成功引发此行为。
- 在 ucParent.AutoScroll=false 和 pnlParent.AutoScroll=true 的情况下,只有垂直滚动条存在。
- ucParent.AutoScroll=true 和 pnlParent.AutoScroll=false 滚动条都不起作用。
- ucParent.AutoScroll=true 和 pnlParent.AutoScroll=true 只有垂直滚动条存在。
在上述所有示例中,所有其他面板和用户控件的 AutoScroll=false。从我目前所读的内容来看,我担心 dock=top 设置可能会干扰水平滚动条的行为。我可以通过使用 AutoScrollMinSize 强制它显示和工作,但面板的大小不同,这让人觉得这更像是一个 hack,而不是一个正确的解决方案。
通过搜索,我发现之前有很多讨论围绕 Windows 表单和滚动条展开,但我没有找到足够具体的内容,我觉得我可以自信地确定我的应用程序的必要方向。如果您能分享任何信息,我将不胜感激,这些信息可以阐明为什么滚动条无法按预期工作以及如何补救。
谢谢!
您遇到的问题与停靠调整控件大小以水平适应表单的方式有关。
当您将控件停靠到其容器的顶部时,它会被拉伸以适合容器。因此,它的任何部分都不会落在容器之外,也不需要显示水平滚动条。这就是您的滚动条没有出现的原因。
此行为是设计使然。