Compartir a través de


Cómo: Enlazar datos DDX/DDV con formularios Windows Forms

DDX_ManagedControl llama a CWinFormsControl::CreateManagedControl para crear un control que coincida con el identificador de control de recursos. Si usa DDX_ManagedControl para un control CWinFormsControl (en código generado por el asistente), no debe llamar a CreateManagedControl explícitamente para el mismo control.

Llame a DDX_ManagedControlen CWnd::D oDataExchange para crear controles a partir de identificadores de recursos. Para el intercambio de datos, no es necesario usar las funciones DDX/DDV con controles de Windows Forms. En su lugar, puede colocar código para tener acceso a las propiedades del control administrado en el método DoDataExchange de la clase de diálogo (o vista), como en el ejemplo siguiente.

En el ejemplo siguiente se muestra cómo enlazar una cadena nativa de C++ a un control de usuario de .NET.

Ejemplo: enlace de datos DDX/DDV

A continuación se muestra un ejemplo del enlace de datos DDX/DDV de una cadena MFC m_str con la propiedad NameText definida por el usuario de un control de usuario de .NET.

El control se crea cuando CDialog::OnInitDialog llama a CMyDlg::DoDataExchange por primera vez, por lo que cualquier código que haga referencia a m_UserControl debe venir después de la llamada a DDX_ManagedControl.

Puede implementar este código en la aplicación MFC01 que creó en Cómo: Crear el control de usuario y el host en un cuadro de diálogo.

Coloque el código siguiente en la declaración de CMFC01Dlg:

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

Ejemplo: Implementación de DoDataExchange()

Coloque el código siguiente en la implementación 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);
   }
}

Ejemplo: Agregar método de controlador

Ahora agregaremos el método de controlador para hacer clic en el botón Aceptar. Haga clic en la pestaña Vista de recursos. En vista de recursos, haga doble clic en IDD_MFC01_DIALOG. El recurso de diálogo aparece en el Editor de recursos. A continuación, haga doble clic en el botón Aceptar.

Defina el controlador como se indica a continuación.

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

Ejemplo: Establecer el texto textBox

Y agregue la siguiente línea a la implementación de BOOL CMFC01Dlg::OnInitDialog().

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

Ya puede compilar y ejecutar la aplicación. Observe que cualquier texto del cuadro de texto se mostrará en un cuadro de mensaje emergente cuando se cierre la aplicación.

Consulte también

CWinFormsControl (clase)
DDX_ManagedControl
CWnd::D oDataExchange