Condividi tramite


Procedura: eseguire data binding DDX/DDV con Windows Form

DDX_ManagedControl chiama CWinFormsControl::CreateManagedControl per creare un controllo corrispondente all'ID del controllo risorsa. Se si usa DDX_ManagedControl per un CWinFormsControl controllo (nel codice generato dalla procedura guidata), non è consigliabile chiamare CreateManagedControl in modo esplicito per lo stesso controllo.

Chiamare DDX_ManagedControl in CWnd::D oDataExchange per creare controlli da ID risorsa. Per lo scambio di dati, non è necessario usare le funzioni DDX/DDV con controlli Windows Form. È invece possibile inserire il codice per accedere alle proprietà del controllo gestito nel DoDataExchange metodo della classe dialog (o view), come nell'esempio seguente.

L'esempio seguente illustra come associare una stringa C++ nativa a un controllo utente .NET.

Esempio: data binding DDX/DDV

Di seguito è riportato un esempio di data binding DDX/DDV di una stringa m_str MFC con la proprietà definita dall'utente NameText di un controllo utente .NET.

Il controllo viene creato quando CDialog::OnInitDialog chiama CMyDlg::DoDataExchange per la prima volta, quindi qualsiasi codice a cui fa m_UserControl riferimento deve venire dopo la DDX_ManagedControl chiamata.

È possibile implementare questo codice nell'applicazione MFC01 creata in Procedura: Creare il controllo utente e l'host in una finestra di dialogo.

Inserire il codice seguente nella dichiarazione di CMFC01Dlg:

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

Esempio: Implementare DoDataExchange()

Inserire il codice seguente nell'implementazione di 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);
   }
}

Esempio: Add handler method

Ora si aggiungerà il metodo del gestore per un clic sul pulsante OK. Fare clic sulla scheda Visualizzazione risorse. In Visualizzazione risorse fare doppio clic su IDD_MFC01_DIALOG. La risorsa della finestra di dialogo viene visualizzata in Editor risorse. Fare quindi doppio clic sul pulsante OK.

Definire il gestore come indicato di seguito.

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

Esempio: Impostare il testo textBox

Aggiungere la riga seguente all'implementazione di BOOL CMFC01Dlg::OnInitDialog().

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

È ora possibile compilare ed eseguire l'applicazione. Si noti che qualsiasi testo nella casella di testo verrà visualizzato in una finestra di messaggio popup alla chiusura dell'applicazione.

Vedi anche

Classe CWinFormsControl
DDX_ManagedControl
CWnd::D oDataExchange