Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

Klasa CWinFormsControl

DDX_ManagedControl

CWnd::DoDataExchange