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/DDV 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/DDV
Voici un exemple de liaison de données DDX/DDV 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