Sdílet prostřednictvím


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

DDX_ManagedControl volá CWinFormsControl::CreateManagedControl k vytvoření ovládacího prvku, který odpovídá ID ovládacího prvku prostředku. Pokud používáte DDX_ManagedControl ovládací prvek (v kódu generovaném CWinFormsControl průvodcem), neměli byste volat CreateManagedControl explicitně pro stejný ovládací prvek.

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

Následující příklad ukazuje, jak vytvořit vazbu nativního řetězce C++ na uživatelský ovládací prvek .NET.

Příklad: Datová vazba DDX/DDV

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

Ovládací prvek se vytvoří, když CDialog::OnInitDialog CMyDlg::DoDataExchange volá poprvé, takže každý kód, který odkazy m_UserControl musí přijít po DDX_ManagedControl volání.

Tento kód můžete implementovat v aplikaci MFC01, kterou jste vytvořili v části Postupy: Vytvoření uživatelského ovládacího prvku a hostitele v dialogovém okně.

Do deklarace CMFC01Dlg vložte následující kód:

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

Příklad: Implementace DoDataExchange()

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

Příklad: Přidání metody obslužné rutiny

Teď přidáme metodu obslužné rutiny pro kliknutí na tlačítko OK. Klikněte na kartu Zobrazení zdrojů. V zobrazení zdrojů poklikejte na IDD_MFC01_DIALOG. Prostředek dialogového okna se zobrazí v Editoru prostředků. Potom poklikejte na tlačítko OK.

Obslužnou rutinu definujte následujícím způsobem.

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

Příklad: Nastavení textu textového pole

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

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

Teď můžete aplikaci sestavit a spustit. Všimněte si, že při zavření aplikace se veškerý text v textovém poli zobrazí v automaticky otevírané zprávě.

Viz také

CWinFormsControl – třída
DDX_ManagedControl
CWnd::D oDataExchange