亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動調整在面板上呈現的多個表單的大小

自動調整在面板上呈現的多個表單的大小

C#
楊__羊羊 2021-10-23 16:26:48
我有這個帶有面板的表格。這個表格有三個面板。一個面板是可折疊的并充當側邊欄,另一個位于頂部并用于顯示標題,最后一個是通過單擊面板一中提供的項目之一打開的表單的占位符?,F在我想要做的是根據面板一的狀態調整(擴大和縮?。┱嘉环姘宓拇笮。▋H寬度)和在面板上打開的表單,可以展開或折疊。擴展塢不工作。
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

經過一些澄清后,所描述的表單的所需布局和行為似乎類似于此示例配置:

WinForms Form嵌入在另一個Form,并放置內Panel。
這個 GuestForm被剝奪了它的TopLevel徽章并成為中央面板的父級,如下圖所示:

http://img1.sycdn.imooc.com//6173c76e0001099e03290212.jpg

您如何??窟@些Panels以獲得此布局:

綠色面板停留在表格的頂部。
深灰面板鋪設在表的左側。
灰色面板占據的剩余空間。

  • 在表單容器上插入三個面板。

  • 綠色面板需要保持它的位置,它永遠不會改變:

    • 右鍵單擊 → SendToBack ( !important:)。

    • 停靠→頂部。

  • 深灰面板被定位在綠色面板下面,在表的左側。它需要在需要時調整自己的大小,但永遠不會覆蓋綠色面板:

    • 停靠→左

  • 灰色面板需要占用的剩余空間。它需要在需要時調整自己的大小,但它永遠不會覆蓋綠色面板或深灰色面板:

    • 右鍵單擊→BringToFront ( !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)

{

    EmbeddedForm = new [Your Form Class]() {

        TopLevel = false,

        Parent = panContainer,

        Location = new Point(4, 4),

        Enabled = true

    };

    EmbeddedForm.Show();

}


private void buttonShrink_Click(object sender, EventArgs e)

{

    //Maybe insert a classic dotted mini-button to re-inflate the sidebar when needed

    panelSideBar.Width = 6;

}


private void panelContainer_Resize(object sender, EventArgs e)

{

    Rectangle rect = panelContainer.ClientRectangle;

    rect.Inflate(-3, -3);

    EmbeddedForm.Size = rect.Size;

}

如果您允許容器面板訪問AutoScroll其內容,Resize則不需要該事件。


查看完整回答
反對 回復 2021-10-23
  • 1 回答
  • 0 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號