首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForm 在 Panel 等容器控件中嵌入顯示另一個 Form 完整實作

     編輯:程式設計綜合問答

核心技巧

將子表單 TopLevel = false,指定 Parent 為容器控件,再呼叫 Show()。

最小程式碼範例

private void btnOpenChild_Click(object sender, EventArgs e)
{
    Form child = new Form();
    child.TopLevel = false;           // 關鍵:非頂層視窗
    child.FormBorderStyle = FormBorderStyle.None; // 無邊框
    child.Dock = DockStyle.Fill;      // 填滿容器
    child.Parent = this.panel1;       // 指定父容器
    child.Show();
}

進階:MDI vs 非 MDI 比較

模式適用場景優點缺點
MDI (IsMdiContainer)傳統桌面多文檔內建視窗管理樣式固化、跨平台差
Panel 嵌入 (TopLevel=false)現代單頁應用風格彈性高、支援動畫/轉場需自行管理生命週期

常見坑點與解決

  • 子表單不顯示:確認 TopLevel=false 在 Show() 前設定。
  • 事件重複綁定:關閉子表單時 child.Dispose() 並移除事件訂閱。
  • 鍵盤焦點問題:子表單 Load 時呼叫 this.ActiveControl = null; 或設定 TabStop。

完整範例專案

GitHub:WinForm Panel Embed Form Demo

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved