Partager via


Comment : établir la liaison des données DDX/DDV avec Windows Forms

DDX_ManagedControl appelle CWinFormsControl ::CreateManagedControl pour créer un contrôle correspondant à l’ID de contrôle de ressource. Si vous utilisez DDX_ManagedControl un CWinFormsControl contrôle (dans le code généré par l’Assistant), vous ne devez pas appeler CreateManagedControl explicitement le même contrôle.

Appelez DDX_ManagedControl CWnd ::D oDataExchange pour créer des contrôles à partir d’ID de ressource. Pour l’échange de données, vous n’avez pas besoin d’utiliser les fonctions DDX/VDD avec des contrôles Windows Forms. Au lieu de cela, vous pouvez placer du code pour accéder aux propriétés du contrôle managé dans la DoDataExchange méthode de votre classe de dialogue (ou d’affichage), comme dans l’exemple suivant.

L’exemple suivant montre comment lier une chaîne C++ native à un contrôle utilisateur .NET.

Exemple : liaison de données DDX/VDD

Voici un exemple de liaison de données DDX/VDD d’une chaîne m_str MFC avec la propriété définie par NameText l’utilisateur d’un contrôle utilisateur .NET.

Le contrôle est créé lorsque CDialog ::OnInitDialog appelle CMyDlg::DoDataExchange pour la première fois, donc tout code qui fait référence m_UserControl doit venir après l’appel DDX_ManagedControl .

Vous pouvez implémenter ce code dans l’application MFC01 que vous avez créée dans How to : Create the User Control and Host in a Dialog Box.

Placez le code suivant dans la déclaration de CMFC01Dlg :

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

Exemple : Implémenter DoDataExchange()

Placez le code suivant dans l’implémentation de 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);
   }
}

Exemple : Ajouter une méthode de gestionnaire

Maintenant, nous allons ajouter la méthode de gestionnaire pour un clic sur le bouton OK. Cliquez sur l’onglet Affichage des ressources. Dans l’affichage des ressources, double-cliquez sur IDD_MFC01_DIALOG. La ressource de boîte de dialogue s’affiche dans l’Éditeur de ressources. Double-cliquez ensuite sur le bouton OK.

Définissez le gestionnaire comme suit.

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

Exemple : Définir le texte textBox

Ajoutez la ligne suivante à l’implémentation de BOOL CMFC01Dlg ::OnInitDialog().

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

Vous pouvez maintenant générer et exécuter l’application. Notez que tout texte de la zone de texte s’affiche dans une zone de message contextuelle lorsque l’application se ferme.

Voir aussi

CWinFormsControl, classe
DDX_ManagedControl
CWnd ::D oDataExchange