如何:使用 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