【问题标题】:C# Windows Form Scrollbars with multiple containers具有多个容器的 C# Windows 窗体滚动条
【发布时间】:2015-09-24 02:28:00
【问题描述】:

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

  • uc父
    • pnl 父级
      • 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 强制它显示和工作,但是面板的大小不同,这让人感觉更像是一种 hack,而不是一个正确的解决方案。

通过搜索,我发现很多以前的讨论都围绕 Windows 窗体和滚动条展开,但我没有找到足够具体的内容,我觉得我可以自信地确定我的应用程序的必要方向。我非常感谢您能分享的任何信息,这些信息将阐明滚动条无法按预期工作的原因以及如何解决。

谢谢!

【问题讨论】:

    标签: c# .net winforms horizontal-scrolling


    【解决方案1】:

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

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

    此行为是设计使然。

    【讨论】:

    • 感谢您的回复!我怕是这样。这样做是有道理的。但是,我在那些足够大的子面板中有用户控件,当调整窗口大小时它们会被隐藏。那么使用 AutoScrollMinSize 会是解决此问题的最佳方法吗?
    • 如果这是您想要的行为,您不应该停靠控件。相反,请设置 Anchor 属性,如此处的答案所述:stackoverflow.com/questions/1222830/…
    • 我还不确定如何通过使用锚来复制当前顶部停靠面板的展开/折叠行为,但我会继续考虑这一点。谢谢你的链接!
    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2021-03-13
    • 2010-10-18
    • 2012-01-27
    • 2016-06-30
    相关资源
    最近更新 更多