簡體   English   中英

具有多個容器的C#Windows窗體滾動條

[英]C# Windows Form Scrollbars with multiple containers

我在使垂直和水平滾動條都無法按我的情況運行時遇到困難。 有問題的頁面具有多個可以擴展和折疊的部分(一次只能擴展一個)。 為了嘗試演示頁面的布局,我將使用嵌套以及盡可能清晰的愚蠢命名約定:

  • 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強制它顯示和工作,但是面板的大小不同,這使它感覺比適當的解決方案更像是一種hack。

通過搜索,我發現許多以前的討論都圍繞Windows窗體和滾動條展開,但是我發現沒有足夠具體的內容,因此我可以自信地確定應用程序的必要方向。 我非常感謝您可以分享的任何信息,這些信息可以闡明為什么滾動條無法按預期工作以及如何進行補救。

謝謝!

您遇到的問題與停靠調整控件大小以使其在表格中水平放置的方式有關。

當將控件停靠在其容器的頂部時,它將被拉伸以適合容器。 因此,它的任何部分都不會落在容器的外部,也不需要顯示水平滾動條。 這就是為什么您的滾動條不出現的原因。

此行為是設計使然。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM