Udostępnij za pośrednictwem


Porady: wiązanie danych DDX/DDV za pomocą interfejsu Windows Forms

DDX_ManagedControlwywołania CWinFormsControl::CreateManagedControl do tworzenia formantu pasujące identyfikator formantu zasobu.Jeśli używasz DDX_ManagedControl dla CWinFormsControl formantu (w Kreatorze wygenerowany kod), nie należy wywoływać CreateManagedControl jawnie dla tego samego formantu.

Wywołanie DDX_ManagedControl w CWnd::DoDataExchange do tworzenia formantów z identyfikatorów zasobów.Do wymiany danych nie należy 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 zarządzanego formantu w DoDataExchange metoda klasy okna dialogowego (lub widoku), jak w poniższym przykładzie.

Poniższy przykład pokazuje jak chcesz powiązać formant użytkownika .NET ciąg macierzystym C++.

Przykład

Poniżej znajduje się przykład wiązania danych ciąg MFC DDX/DDV m_str z przez użytkownika NameText właściwości formantu użytkownika .NET.

Formant nie zostanie utworzony po CDialog::OnInitDialog wywołania CMyDlg::DoDataExchange po raz pierwszy, tak aby kod odwołujący się m_UserControl musi następować po DDX_ManagedControl zadzwonić.

Ten kod można zaimplementować w aplikacji MFC01 został utworzony w Porady: tworzenie formantu użytkownika i hosta w oknie dialogowym.

W deklaracji z CMFC01Dlg, umieść następujący kod:

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

W wykonywaniu CMFC01Dlg, umieść następujący kod:

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 metodę obsługi kliknij przycisk OK.Kliknij przycisk Widoku zasobów kartę.W widoku zasobów kliknij dwukrotnie na IDD_MFC01_DIALOG.Zasoby dialogowe pojawiają się w Edytor zasobów.Następnie dwukrotnie kliknij przycisk OK.

Definiuje obsługi 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 dowolny tekst w polu tekstowym będą wyświetlane w oknie podręcznym komunikatu po zamknięciu aplikacji.

Zobacz też

Informacje

Klasa CWinFormsControl

DDX_ManagedControl

CWnd::DoDataExchange