【发布时间】:2019-12-02 21:55:49
【问题描述】:
我似乎无法弄清楚如何在 WinForm 的拆分容器中保持面板的宽度固定。
有什么建议吗?
【问题讨论】:
-
如果你想固定宽度,那么为什么要使用拆分容器呢?您可以使用两个面板。或者最好使用每个控件的锚属性。
-
分体容器是专门为有液体面板而设计的?哦!
我似乎无法弄清楚如何在 WinForm 的拆分容器中保持面板的宽度固定。
有什么建议吗?
【问题讨论】:
属性SplitterPanel.FixedPanel - 将其中一个面板设置为固定大小
属性SplitterPanel.IsSplitterFixed - 设置为真
【讨论】:
为了使panel1固定
在SplitContainer的属性中,将FixedPanel属性设置为Panel1。
然后,将SplitDistance 和Panel1MinSize 设置为相同的值。
【讨论】:
SplitterDistance 而不是SplitDistance。此外,我不得不修改表单背后的代码,因为无法在 IDE 的“属性”窗口中访问属性,也无法通过表单事件中的代码(例如表单加载)访问这些属性。
修复面板(锁定面板):
SplitContainer.FixedPanel = FixedPanel.Panel
【讨论】:
如果您要保持一个面板的大小固定,则没有合乎逻辑的方法来移动拆分器。由于您无法移动拆分器,因此不再使用 SplitContainer 是没有意义的。使用两个面板控件。
【讨论】:
这取决于你想要什么。
FixedPanel 让用户调整面板大小,但在调整控件大小时它不会自动调整大小。
IsSplitterFixed 将禁用拆分器,但在调整控件大小时仍会自动调整大小。
如果您同时使用两者,那么它将完全修复。但是你最好像 Hans 所说的那样使用两个面板。
【讨论】:
// 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;
【讨论】: