SplitContainer仅调整panel1的大小

时间:2010-08-13 18:45:32

标签: c# custom-controls splitcontainer

有没有办法让SplitContainer只调整panel1的大小?我有一个Vertical SplitContainer,当我移动分割器时,我希望第一个面板的大小增加/减少,而不是改变第二个面板的大小,我希望表单增加和减小尺寸。

我创建了一些代码来增加/减少表单的大小,但是Panel2也在改变大小,因此整个面板并不总是可见。

我是否必须制作自己的容器,或者使用SplitContainer可以吗?

我有一个表单“MainWin”,其中包含一个Panel“MainPanel”MainPanel包含SplitContainer“MainSplitContainer”。 Panel1包含TreeView,Panel2包含3个面板,这些面板根据TreeView中选择的项目可见。我希望这三个面板始终完全可见(我打算限制分割器的扩展,以便表单不能扩展到屏幕之外),这是可能的还是我应该创建自己的控件并调整使用的大小MouseDown,MouseUp和MouseMove事件?

3 个答案:

答案 0 :(得分:6)

无需创建自己的表单:SplitContainer具有以下属性:“FixedPanel” 选择SplitContainer并在Layout部分中查看“FixedPanel”将其设置为您希望在宽度或高度上保持不变的面板(取决于面板布局)。

编程方式:

sc.FixedPanel = FixedPanel.Panel1; //Or Panel2

请参阅:

Splitcontainer, Make a fixed panel

Fixed Panel Height in a SplitContainer

答案 1 :(得分:0)

您无法在SplitContainer中设置面板的height属性;但您可以捕获表单上的Resize事件并设置splitterDistance。 SplitContainer将为您调整其他面板。这是我下面的工作中的一段代码,它成功地强制Panel1在表单调整大小时保持相同的大小。希望这有帮助

Private Sub frmApp_Resize(ByVal sender As System.Object,ByVal e As System.EventArgs)处理MyBase.Resize         Me.SplitContainer1.SplitterDistance = 140     结束子

答案 2 :(得分:-1)

我最终创建了自己的控件。