共用方式為


如何:建立使用者控制項並裝載至對話方塊中

本文中的步驟假設您正在建立對話方塊型 (CDialog 類別) Microsoft Foundation Classes (MFC) 專案,但您也可以將 Windows Forms 控件的支援新增至現有的 MFC 對話框。

若要建立 .NET 使用者控件

  1. 建立名為 WindowsFormsControlLibrary1的 Visual C# Windows Forms 控件連結庫專案。

    在 [檔案] 功能表上,按一下 [新增],然後按一下 [專案]。 在 Visual C# 資料夾中,選取 [Windows Forms 控件連結庫]。

    按兩下 [確定] 以WindowsFormsControlLibrary1接受項目名稱。

    根據預設,.NET 控制件名稱會是 UserControl1

  2. 將子控制項新增至 UserControl1

    在 [工具箱],開啟 [所有 Windows Forms] 列表。 將 按鈕 控件拖曳至 UserControl1 設計介面。

    同時新增 TextBox 控制件。

  3. 方案總管 中,按兩下UserControl1.Designer.cs以開啟它進行編輯。 將 TextBox 和 Button 的宣告從 private 變更為 public

  4. 組建專案。

    在 [建置] 功能表上,按一下 [建置方案]。

建立 MFC 主應用程式

  1. 建立 MFC 應用程式專案。

    在 [檔案] 功能表上,按一下 [新增],然後按一下 [專案]。 在 [ Visual C++] 資料夾中,選取 [MFC 應用程式]。

    在 [名稱] 方塊中,輸入 MFC01。 將 [方案] 設定變更為 [新增至方案]。 按一下 [確定]

    在 [MFC 應用程式精靈] 中,針對 [應用程式類型],選取 [以對話框為基礎的]。 接受其餘的預設設定,然後按兩下 [ 完成]。 這會建立具有 MFC 對話框的 MFC 應用程式。

  2. 將佔位元元控件新增至 [MFC] 對話框。

    在 [ 檢視] 功能表上,單擊 [ 資源檢視]。 在 [資源檢視] 中 ,展開 [對話框 ] 資料夾,然後按兩下 IDD_MFC01_DIALOG。 對話框資源會出現在資源編輯器

    在 [工具箱] 中,開啟 [對話框編輯器] 清單。 將 靜態文字 控件拖曳至對話框資源。 靜態 文字 控件將做為 .NET Windows Forms 控件的佔位符。 將其大小調整為大約是 Windows Forms 控件的大小。

    在 [屬性] 視窗中,將 [靜態文字] 控件的標識符變更IDC_CTRL1 ,並將 TabStop 屬性變更True

  3. 設定 Common Language Runtime (CLR) 支援的專案。

    方案總管 中,以滑鼠右鍵按兩下 MFC01 項目節點,然後按兩下 [屬性]。

    在 [屬性頁] 對話框的 [組態屬性] 底下,選取 [一般]。 在 [項目預設值] 區段中,將 Common Language Runtime 支援設定Common Language Runtime 支援 (/clr)

    在 [組態屬性]下,展開 [C/C++],然後選取 [一般] 節點。 將 [偵錯資訊格式] 設定[程序資料庫] (/Zi)

    選取 [ 程序代碼產生] 節點。 將 [啟用最小重建] 設定[否] (/Gm-) 。 同時將 [基本運行時間檢查] 設定[預設值]。

    按一下確定以套用變更。

  4. 新增 .NET 控件的參考。

    方案總管 中,以滑鼠右鍵按兩下 MFC01 項目節點,然後按兩下 [新增]、[參考]。 在 [屬性頁] 上,按兩下 [新增參考],選取 [WindowsFormsControlLibrary1] (在 [專案] 索引卷標下),然後按兩下 [確定]。 這會以 /FU 編譯程序選項的形式新增參考,讓程式能夠編譯。 它也會將WindowsFormsControlLibrary1.dll複本放在 \MFC01\ 項目資料夾中,讓程序執行。

  5. 在 Stdafx.h 中,尋找這一行:

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    在上面新增下列幾行:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. 新增程序代碼以建立Managed控制件。

    首先,宣告 Managed 控制件。 在 MFC01Dlg.h 中,移至對話框類別的宣告,並在 Protected 範圍中新增使用者控件的數據成員,如下所示。

    class CMFC01Dlg : public CDialog
    {
       // ...
       // Data member for the .NET User Control:
       CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_ctrl1;
    

    接下來,提供 Managed 控件的實作。 在 MFC01Dlg.cpp 中,在 MFC 應用程式精靈所產生的對話框覆寫 CMFC01Dlg::DoDataExchange 中,新增 CAboutDlg::DoDataExchange下列程式代碼來建立 Managed 控制件,並將它與靜態位置持有者產生關聯IDC_CTRL1。

    void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
    {
       CDialog::DoDataExchange(pDX);
       DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
    }
    
  7. 建置並執行專案。

    方案總管 中,以滑鼠右鍵按兩下 [MFC01],然後按兩下 [設定為啟始專案]。

    在 [建置] 功能表上,按一下 [建置方案]。

    在 [偵錯] 功能表上,單擊 [開始但不偵錯]。 [MFC] 對話框應該會顯示 Windows Form 控制件。

另請參閱

將 Windows Forms 使用者控制項裝載至 MFC 對話方塊中