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

WinForm 視窗封裝為 DLL 嵌入其他平台:繼承 UserControl 而非 Form

     編輯:程式設計疑難解答

需將 WinForm 視窗封裝成 DLL 供外部平台調用,並嵌入指定區域 (非浮動)。核心技巧:繼承 UserControl 而非 Form。

實作步驟

  1. 新建 Windows Forms 控制項庫 專案 (或類庫專案加參考 System.Windows.Forms)。
  2. 建立類別繼承 UserControl:
    public partial class MyEmbeddedPanel : UserControl {
        public MyEmbeddedPanel() { InitializeComponent(); }
        // 內部邏輯同 Form,但無邊框、標題列、獨立視窗行為
    }
  3. 在設計器中佈局控制項 (Button、Grid 等),邏輯寫在 UserControl 內。
  4. 建置專案產出 MyControl.dll。

宿主平台調用

// 宿主 Form/Container
MyEmbeddedPanel panel = new MyEmbeddedPanel();
panel.Dock = DockStyle.Fill; // 填滿預留區域
this.Controls.Add(panel);    // 嵌入 Panel/TabPage 等容器

關鍵差異

FormUserControl
獨立視窗,有標題列、邊框、最小化/關閉鈕無視窗外殼,純容器,需放入 Form/Panel/TabPage
Show()/ShowDialog() 顯示加入 Controls 集合顯示
不適合嵌入其他視窗專為嵌入設計,支援 Dock/Anchor 佈局

若必須保留 Form 行為 (如模態對話框),可在 DLL 中提供 public static Form CreateForm() 工廠方法,但嵌入場景請直接用 UserControl。

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