需將 WinForm 視窗封裝成 DLL 供外部平台調用,並嵌入指定區域 (非浮動)。核心技巧:繼承 UserControl 而非 Form。
System.Windows.Forms)。UserControl:
public partial class MyEmbeddedPanel : UserControl {
public MyEmbeddedPanel() { InitializeComponent(); }
// 內部邏輯同 Form,但無邊框、標題列、獨立視窗行為
}
MyControl.dll。// 宿主 Form/Container
MyEmbeddedPanel panel = new MyEmbeddedPanel();
panel.Dock = DockStyle.Fill; // 填滿預留區域
this.Controls.Add(panel); // 嵌入 Panel/TabPage 等容器
| Form | UserControl |
|---|---|
| 獨立視窗,有標題列、邊框、最小化/關閉鈕 | 無視窗外殼,純容器,需放入 Form/Panel/TabPage |
| Show()/ShowDialog() 顯示 | 加入 Controls 集合顯示 |
| 不適合嵌入其他視窗 | 專為嵌入設計,支援 Dock/Anchor 佈局 |
若必須保留 Form 行為 (如模態對話框),可在 DLL 中提供 public static Form CreateForm() 工廠方法,但嵌入場景請直接用 UserControl。