Jak: czy powiązanie danych DDX/DDV z Windows Forms
DDX_ManagedControlwywołania CWinFormsControl::CreateManagedControl do tworzenia formantu dopasowania identyfikator zasobu kontroli.Jeśli używasz DDX_ManagedControl do CWinFormsControl formantu (w Kreatorze wygenerowany kod), nie należy wywoływać CreateManagedControl jawnie dla samego formantu.
Wywołanie DDX_ManagedControl w CWnd::DoDataExchange do tworzenia formantów z identyfikatorów zasobów.Wymiany danych nie trzeba używać funkcji DDX/DDV z formantami Windows Forms.Zamiast tego można umieścić kod, aby uzyskać dostęp do właściwości formantu zarządzanych w DoDataExchange metody klasy okna dialogowego (lub widoku), jak w poniższym przykładzie.
Poniższy przykład ilustruje sposób powiązać ciąg macierzystym C++.NET user kontroli.
Przykład
Oto przykład wiązania danych DDX/DDV z ciągiem MFC m_str z przez użytkownika NameText właściwości.NET user kontroli.
Formant jest tworzone, gdy CDialog::OnInitDialog wywołania CMyDlg::DoDataExchange po raz pierwszy, tak aby kod odwołujący się do m_UserControl musi pochodzić od DDX_ManagedControl wywołania.
Można zaimplementować ten kod w aplikacji MFC01 utworzone w Jak: Tworzenie formantu użytkownika i hosta w oknie dialogowym.
Umieść następujący kod w deklaracji CMFC01Dlg:
class CMFC01Dlg : public CDialog
{
CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_MyControl;
CString m_str;
};
Umieść następujący kod w realizacji 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);
}
}
Teraz dodamy metoda obsługi kliknij przycisk OK.Kliknij Widok zasobów kartę.W widoku zasobów kliknij dwukrotnie na IDD_MFC01_DIALOG.Okno dialogowe zasób pojawi się w edytorze zasobów.Następnie kliknij dwukrotnie przycisk OK.
Program obsługi należy zdefiniować w następujący sposób.
void CMFC01Dlg::OnBnClickedOk()
{
AfxMessageBox(CString(m_MyControl.GetControl()->textBox1->Text));
OnOK();
}
I Dodaj następujący wiersz do wykonania BOOL CMFC01Dlg::OnInitDialog().
m_MyControl.GetControl()->textBox1->Text = "hello";
Można teraz skompilować i uruchomić aplikację.Należy zauważyć, że tekst w polu tekstu będą wyświetlane w oknie podręcznym komunikatu powoduje zamknięcie aplikacji.