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