Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DDX_ManagedControl ruft CWinFormsControl::CreateManagedControl auf, um ein Steuerelement zu erstellen, das der ID des Ressourcensteuerelements entspricht.Wenn Sie DDX_ManagedControl für ein CWinFormsControl-Steuerelement verwenden (in durch den Assistenten erstelltem Code), sollte CreateManagedControl nicht explizit für das gleiche Steuerelement aufgerufen werden.
Rufen Sie in CWnd::DoDataExchangeDDX_ManagedControl auf, um aus Ressourcen-IDs Steuerelemente zu erstellen.Für den Datenaustausch ist es nicht notwendig, die DDX/DDV-Funktionen mit Windows Forms-Steuerelementen zu verwenden.Stattdessen können Sie in der DoDataExchange-Methode der Dialog- oder Ansichtsklasse Code platzieren, um auf die Eigenschaften des verwalteten Steuerelements zuzugreifen. Dies wird im folgenden Beispiel erläutert.
Im folgenden Beispiel wird gezeigt, wie eine systemeigene C++-Zeichenfolge an ein .NET-Benutzersteuerelement gebunden wird.
Beispiel
Es folgt ein Beispiel einer DDX/DDV-Datenbindung einer MFC-Zeichenfolge m_str mit einer benutzerdefinierten NameText-Eigenschaft eines .NET-Benutzersteuerelements.
Das Steuerelement wird erstellt, wenn CMyDlg::DoDataExchange zum ersten Mal durch CDialog::OnInitDialog aufgerufen wird. Deshalb muss jeder Code, der auf m_UserControl verweist, nach dem DDX_ManagedControl-Aufruf platziert werden.
Sie können diesen Code in der MFC01-Anwendung implementieren, die Sie in Gewusst wie: Erstellen des Benutzersteuerelements und des Hosts in einem Dialogfeld erstellt haben.
Fügen Sie den folgenden Code in die Deklaration von CMFC01Dlg ein:
class CMFC01Dlg : public CDialog
{
CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_MyControl;
CString m_str;
};
Fügen Sie den folgenden Code in die Implementierung von CMFC01Dlg ein:
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);
}
}
Nun wird die Handlermethode für einen Klick auf die Schaltfläche OK hinzugefügt.Klicken Sie auf die Registerkarte Ressourcenansicht.Doppelklicken Sie in der Ressourcenansicht auf IDD_MFC01_DIALOG.Die Dialogressource wird im Ressourcen-Editor angezeigt.Doppelklicken Sie dann auf die Schaltfläche OK.
Definieren Sie den Handler wie folgt.
void CMFC01Dlg::OnBnClickedOk()
{
AfxMessageBox(CString(m_MyControl.GetControl()->textBox1->Text));
OnOK();
}
Fügen Sie der Implementierung von BOOL CMFC01Dlg::OnInitDialog() die folgende Zeile hinzu.
m_MyControl.GetControl()->textBox1->Text = "hello";
Sie können die Anwendung jetzt erstellen und ausführen.Beachten Sie, dass der Text im Textfeld beim Schließen der Anwendung in einem Popupmeldungsfeld angezeigt wird.