【问题标题】:Keeping One Split Container Panel Fixed Width?保持一个拆分容器面板固定宽度?
【发布时间】:2019-12-02 21:55:49
【问题描述】:

我似乎无法弄清楚如何在 WinForm 的拆分容器中保持面板的宽度固定。

有什么建议吗?

【问题讨论】:

  • 如果你想固定宽度,那么为什么要使用拆分容器呢?您可以使用两个面板。或者最好使用每个控件的锚属性。
  • 分体容器是专门为有液体面板而设计的?哦!

标签: c# winforms


【解决方案1】:

属性SplitterPanel.FixedPanel - 将其中一个面板设置为固定大小

属性SplitterPanel.IsSplitterFixed - 设置为真

【讨论】:

  • 请注意,当 SplitContainer 的整体尺寸变得太小时,固定面板将被缩小以适应,并且不会恢复到“固定”尺寸,除非您在SizeChanged 事件...
  • 不会最小。面板尺寸可以防止这个问题吗?
【解决方案2】:

为了使panel1固定 在SplitContainer的属性中,将FixedPanel属性设置为Panel1

然后,将SplitDistancePanel1MinSize 设置为相同的值。

【讨论】:

  • 谢谢,这有帮助。一次更正,属性是SplitterDistance 而不是SplitDistance。此外,我不得不修改表单背后的代码,因为无法在 IDE 的“属性”窗口中访问属性,也无法通过表单事件中的代码(例如表单加载)访问这些属性。
【解决方案3】:

修复面板(锁定面板):

SplitContainer.FixedPanel = FixedPanel.Panel

【讨论】:

    【解决方案4】:

    如果您要保持一个面板的大小固定,则没有合乎逻辑的方法来移动拆分器。由于您无法移动拆分器,因此不再使用 SplitContainer 是没有意义的。使用两个面板控件。

    【讨论】:

    • 或者 TableLayoutPanel 可能更适合,而不是 2 个独立且几乎独立的面板。
    • 感谢您朝着正确的方向前进,在这种情况下使用 splicontainer 真的没有意义 :)
    • 我不同意。以我嵌入拆分容器的情况为例。我有 3 个段,其中 2 个段我想调整大小(想想 3 列 - 左侧数据列、右侧数据列和中间固定宽度的工具按钮列)。所以,如果我只使用 1 个拆分容器,我不能在右侧放置一个面板,并停靠一个 Listbox 控件。列表框最终位于面板后面并被部分遮挡。
    【解决方案5】:

    这取决于你想要什么。

    FixedPanel 让用户调整面板大小,但在调整控件大小时它不会自动调整大小。

    IsSplitterFixed 将禁用拆分器,但在调整控件大小时仍会自动调整大小。

    如果您同时使用两者,那么它将完全修复。但是你最好像 Hans 所说的那样使用两个面板。

    【讨论】:

      【解决方案6】:
      // from Microsoft documentation similar to Dmitri answer:::::::::::
      // if make panel1 fixed:
      mySplitContainer.FixPanel = System.Windows.Forms.FixedPanel.Panel1;
      
      // if make panel2 fixed (in this case can't use fixed splitter distance):
      mySplitContainer.FixPanel = System.Windows.Forms.FixedPanel.Panel2;
      
      // and to be safe set the appropriate panel min size for the splitcontainer too;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        相关资源
        最近更新 更多