共用方式為


如何:使用 Windows Form 執行 DDX/DDV 資料繫結

DDX_ManagedControl 呼叫 CWinFormsControl::CreateManagedControl 來建立符合資源控制項識別碼的控制項。 如果您使用 DDX_ManagedControl 控制項 CWinFormsControl (在精靈產生的程式碼中),則不應該明確呼叫 CreateManagedControl 相同的控制項。

在 CWnd::D oDataExchange 呼叫 DDX_ManagedControl ,以從資源識別碼建立控制項。 針對資料交換,您不需要搭配 Windows Forms 控制項使用 DDX/DDV 函式。 相反地,您可以將程式碼放在對話方塊 (或檢視) 類別的 方法中 DoDataExchange ,存取 Managed 控制項的屬性,如下列範例所示。

下列範例示範如何將原生 C++ 字串系結至 .NET 使用者控制項。

範例:DDX/DDV 資料系結

以下是 MFC 字串 m_str 與 .NET 使用者控制項使用者定義屬性的 DDX/DDV 資料系結 NameText 範例。

當 CDialog::OnInitDialog 第一次呼叫 CMyDlg::DoDataExchange ,就會建立控制項,因此任何參考 m_UserControl 的程式碼都必須在呼叫之後 DDX_ManagedControl

您可以在您在 How to: Create the User Control and Host in a Dialog Box 建立的 MFC01 應用程式中實作此程式碼。

將下列程式碼放在 CMFC01Dlg 的宣告中:

class CMFC01Dlg : public CDialog
{
   CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_MyControl;
   CString m_str;
};

範例:實作 DoDataExchange()

將下列程式碼放在 CMFC01Dlg 的實作中:

void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
{
   CDialog::DoDataExchange(pDX);
   DDX_ManagedControl(pDX, IDC_CTRL1, m_MyControl);

   if (pDX->m_bSaveAndValidate) {
      m_str = m_MyControl->textBox1->Text;
   } else
   {
      m_MyControl->textBox1->Text = gcnew System::String(m_str);
   }
}

範例:新增處理常式方法

現在,我們將新增處理常式方法,以按一下 [確定] 按鈕。 按一下 [ 資源檢視] 索引標籤。在 [資源檢視] 中 IDD_MFC01_DIALOG ,按兩下 。 對話方塊資源會出現在資源編輯器中。 然後按兩下 [確定] 按鈕。

定義處理常式,如下所示。

void CMFC01Dlg::OnBnClickedOk()
{
   AfxMessageBox(CString(m_MyControl.GetControl()->textBox1->Text));
   OnOK();
}

範例:設定 textBox 文字

並將下列這一行新增至 BOOL CMFC01Dlg::OnInitDialog() 的實作。

m_MyControl.GetControl()->textBox1->Text = "hello";

您現在可以建置並執行應用程式。 請注意,當應用程式關閉時,文字方塊中的任何文字都會顯示在快顯訊息方塊中。

另請參閱

CWinFormsControl 類別
DDX_ManagedControl
CWnd::D oDataExchange