Sdílet prostřednictvím


Postupy: Vyvtáření datové vazby DDX/DDV s modelem Windows Forms

DDX_ManagedControl volá CWinFormsControl::CreateManagedControl k vytvoření ovládacího prvku odpovídajícímu ID ovládacího prvku prostředku. Používáte-li ovládací prvek DDX_ManagedControl pro CWinFormsControl (ve vygenerovaném kódu průvodcem), neměli by jste volat explicitně CreateManagedControl pro stejný ovládací prvek.

Volání DDX_ManagedControl v CWnd::DoDataExchange k vytvoření ovládacích prvků z ID prostředků. Pro výměnu dat nepotřebujete použít funkce DDX/DDV s modelem ovládacích prvků Windows Forms. Místo toho můžete umístit kód pro přístup k vlastnostem spravovaného ovládacího prvku v metodě DoDataExchange Vaší dialogové (nebo pohledové) třídy, jako v následujícím příkladu.

Následující příklad ukazuje, jak svázat nativní řetězec C++ k .NET uživatelskému ovládacímu prvku.

Příklad

Následuje příklad DDX/DDV datové vazby řetězce knihovny MFCm_str s vlastností definovanou uživatelem NameText ovládacího prvku uživatelského rozhraní .NET.

Ovládací prvek je vytvořen když CDialog::OnInitDialog poprvé zavolá CMyDlg::DoDataExchange takže zbytek kódu, který odkazuje na m_UserControl musí přijít až po volání DDX_ManagedControl.

Tento kód můžete implementovat v aplikaci MFC01, kterou jste vytvořili v Postupy: Jak vytvořit uživatelský ovládací prvek a vložit jej do dialogového okna.

V deklaraci CMFC01Dlg, vložte následující kód:

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

V implementaci CMFC01Dlg, vložte následující kód:

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);
   }
}

Nyní přidáme metodu obslužné rutiny pro klepnutí na tlačítko OK. Klepněte na záložkuZobrazení Zdrojů. V Zobrazení Zdrojů, poklepejte na IDD_MFC01_DIALOG. Prostředek dialogového okna se zobrazí v Editoru Prostředků. Poté poklepejte na tlačítko OK.

Obslužnou rutinu definujte následovně.

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

A přidejte následující řádek k implementaci BOOL CMFC01Dlg::OnInitDialog().

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

Nyní můžete sestavit a spustit aplikaci. Všimněte si, že jakýkoli text v textovém poli se zobrazí v místním okně se zprávou, když se aplikace uzavře.

Viz také

Odkaz

CWinFormsControl Class

DDX_ManagedControl

CWnd::DoDataExchange