猿问

自动调整在面板上呈现的多个表单的大小

我有这个带有面板的表格。这个表格有三个面板。
一个面板是可折叠的并充当侧边栏,另一个位于顶部并用于显示标题,最后一个是通过单击面板一中提供的项目之一打开的表单的占位符。

现在我想要做的是根据面板一的状态调整(扩大和缩小)占位符面板的大小(仅宽度)和在面板上打开的表单,可以展开或折叠。扩展坞不工作。

杨__羊羊
浏览 142回答 1
1回答

蛊毒传说

经过一些澄清后,所描述的表单的所需布局和行为似乎类似于此示例配置:阿WinForms&nbsp;Form被嵌入在另一个Form,并放置内Panel。这个 GuestForm被剥夺了它的TopLevel徽章并成为中央面板的父级,如下图所示:您如何停靠这些Panels以获得此布局:在绿色面板停留在表格的顶部。该深灰面板铺设在表的左侧。在灰色面板占据的剩余空间。在表单容器上插入三个面板。在绿色面板需要保持它的位置,它永远不会改变:右键单击 → SendToBack (&nbsp;!important:)。停靠→顶部。的深灰面板被定位在绿色面板下面,在表的左侧。它需要在需要时调整自己的大小,但永远不会覆盖绿色面板:停靠→左在灰色面板需要占用的剩余空间。它需要在需要时调整自己的大小,但它永远不会覆盖绿色面板或深灰色面板:右键单击→BringToFront (&nbsp;!important)码头 → 中心对接时的最高优先级分配给堆栈中具有最低 z 顺序的元素:绿色面板,此处。最低优先级分配给具有最高 z 顺序的元素:灰色面板,然后它将在具有较高优先级的所有其他元素之间收缩和拉伸(遵循 z 顺序)。如何嵌入表单:容易的部分。它是我们项目中的一个表单,在重新设置父级时无需执行任何魔法以使其保持活动状态:(这仅适用于 1 个表单。使用更多表单,您将需要类似的东西List<Control>://Define here the Form which will be embedded[Your Form Class] EmbeddedForm;private void button1_Click(object sender, EventArgs e){&nbsp; &nbsp; EmbeddedForm = new [Your Form Class]() {&nbsp; &nbsp; &nbsp; &nbsp; TopLevel = false,&nbsp; &nbsp; &nbsp; &nbsp; Parent = panContainer,&nbsp; &nbsp; &nbsp; &nbsp; Location = new Point(4, 4),&nbsp; &nbsp; &nbsp; &nbsp; Enabled = true&nbsp; &nbsp; };&nbsp; &nbsp; EmbeddedForm.Show();}private void buttonShrink_Click(object sender, EventArgs e){&nbsp; &nbsp; //Maybe insert a classic dotted mini-button to re-inflate the sidebar when needed&nbsp; &nbsp; panelSideBar.Width = 6;}private void panelContainer_Resize(object sender, EventArgs e){&nbsp; &nbsp; Rectangle rect = panelContainer.ClientRectangle;&nbsp; &nbsp; rect.Inflate(-3, -3);&nbsp; &nbsp; EmbeddedForm.Size = rect.Size;}如果您允许容器面板访问AutoScroll其内容,Resize则不需要该事件。
随时随地看视频慕课网APP
我要回答