2

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

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

我将不得不制作自己的容器,还是可以使用 SplitContainer?

我有一个包含面板“MainPanel”的表单“MainWin” MainPanel 包含SplitContainer“MainSplitContainer”。Panel1 包含一个 TreeView,而 Panel2 包含 3 个面板,这些面板根据在 TreeView 中选择的项目而变得可见。我希望这 3 个面板始终完全可见(我计划限制拆分器的扩展,因此表单不能扩展到屏幕之外),这是否可能,或者我应该创建自己的控件并使用调整大小MouseDown、MouseUp 和 MouseMove 事件?

4

3 回答 3

6

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

以编程方式:

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

看:

Splitcontainer,做一个固定面板

SplitContainer 中的固定面板高度

于 2010-10-05T14:21:44.997 回答
0

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

Private Sub frmApp_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize Me.SplitContainer1.SplitterDistance = 140 End Sub

于 2011-12-21T16:06:07.727 回答
-1

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

于 2010-08-17T17:44:37.040 回答