共用方式為


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

更新:2007 年 11 月

本主題中的程序假設您是要建立新的對話方塊架構的 (CDialog Class) MFC 專案,但是您也可以在現有的 MFC 對話方塊中加入 Windows Form 控制項的支援。

若要建立 .NET 使用者控制項

  1. 建立名稱為 WindowsControlLibrary1 的新的 Visual C# Windows 控制項程式庫專案。

    從 [檔案] 功能表中,選取 [新增],再選取 [專案]。在 [Visual C#] 資料夾中,選取 [Windows 控制項程式庫] 圖示。

    按一下 [確定],接受預設的專案名稱 WindowsControlLibrary1。

    .NET 控制項的預設名稱將會是 UserControl1。

  2. 在 UserControl1 中加入子控制項。

    在 [工具箱] 中,開啟 [所有 Windows Form] 清單。將 Button 控制項拖曳至 UserControl1 設計介面。

    另外再加入 TextBox 控制項。

  3. 在 UserControl1.Designer.cs 檔案中,將 TextBox 和 Button 控制項的宣告從 private 變更為 public。

  4. 建置專案。

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

    請將所產生之 DLL 的檔案名稱與完整路徑記載在建置記錄中,因為您將會在 MFC 應用程式中輸入這項資訊。

若要建立 MFC 主應用程式

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

    從 [檔案] 功能表中,選取 [新增],再選取 [專案]。在 [Visual C++] 資料夾中,選取 [MFC 應用程式] 圖示。

    在 [名稱] 方塊中,輸入 MFC01。將方案設定變更為 [加入至方案]。按一下 [確定]。[MFC 應用程式精靈] 隨即出現。

    在 [MFC 應用程式精靈] 中,選取 [應用程式類型]。選擇 [對話方塊架構]。接受其餘的預設值,然後按一下 [完成]。這時將會建立含有 MFC 對話方塊的 MFC 應用程式。

  2. 在 MFC 對話方塊中加入預留位置控制項。

    按一下 [資源檢視] 索引標籤。在 [資源檢視] 中,按兩下 [IDD_MFC01_DIALOG]。對話方塊資源隨即出現在 [資源編輯器] 中。

    在 [工具箱] 中,開啟 [對話方塊編輯器] 清單。將靜態文字控制項拖曳至對話方塊資源中。靜態文字控制項將會當做 .NET Windows Form 控制項的預留位置。將其大小調整為大約 Windows Form 控制項的大小。

    在 [屬性] 視窗中,將靜態文字控制項的 ID 變更為 [IDC_CTRL1],並將 [TabStop] 屬性變更為 [True]。

  3. 設定專案。

    在 [方案總管] 中,以滑鼠右鍵按一下 [MFC01] 專案節點,然後從內容功能表中選取 [屬性]。[屬性頁] 對話方塊便會出現。

    在 [屬性頁] 對話方塊的 [組態屬性] 樹狀控制項中,選取 [一般],然後在 [專案預設值] 區段中,將 [Common Language Runtime 支援] 設定為 [Common Language Runtime 支援 (/clr)]。按一下 [確定]。

  4. 將參考加入至 .NET 控制項。

    在 [方案總管] 中,以滑鼠右鍵按一下 [MFC01] 專案節點並選取 [參考]。在 [屬性頁] 中,按一下 [加入新參考],選取 [WindowsControlLibrary1] (在 [專案] 索引標籤下),然後按一下 [確定]。這時便會以 /FU 編譯器選項的形式加入參考,讓程式能夠進行編譯,同時也會將 WindowsControlLibrary1.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<WindowsControlLibrary1::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 Form 使用者控制項裝載至 MFC 對話方塊中