Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
DDX_ManagedControl anropar CWinFormsControl::CreateManagedControl för att skapa en kontroll som matchar resurskontroll-ID:t. Om du använder DDX_ManagedControl för en CWinFormsControl kontroll (i guidegenererad kod) bör du inte anropa CreateManagedControl uttryckligen för samma kontroll.
Anropa DDX_ManagedControl i CWnd::DoDataExchange för att skapa kontroller från resurs-ID:n. För datautbyte behöver du inte använda DDX/DDV-funktionerna med Windows Forms-kontroller. I stället kan du placera kod för att komma åt egenskaperna för den hanterade kontrollen i klassen DoDataExchange i dialogrutan (eller vyn), som i följande exempel.
I följande exempel visas hur du binder en inbyggd C++-sträng till en .NET-användarkontroll.
Exempel: DDX/DDV-databindning
Följande är ett exempel på DDX/DDV-databindning av en MFC-sträng m_str med den användardefinierade NameText egenskapen för en .NET-användarkontroll.
Kontrollen skapas när CDialog::OnInitDialog anropar CMyDlg::DoDataExchange för första gången, så all kod som refererar till m_UserControl måste komma efter DDX_ManagedControl-anropet.
Du kan implementera den här koden i MFC01-programmet som du skapade i Så här: Skapa användarkontroll och värd i en dialogruta.
Placera följande kod i deklarationen av CMFC01Dlg:
class CMFC01Dlg : public CDialog
{
CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_MyControl;
CString m_str;
};
Exempel: Implementera DoDataExchange()
Placera följande kod i implementeringen av 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);
}
}
Exempel: Lägg till hanteringsmetod
Nu ska vi lägga till hanteringsmetoden för ett klick på OK-knappen. Klicka på fliken Resursvy. Dubbelklicka på IDD_MFC01_DIALOGi Resursvyn. Dialogresursen visas i Resursredigeraren. Dubbelklicka sedan på OK-knappen.
Definiera hanteraren enligt följande.
void CMFC01Dlg::OnBnClickedOk()
{
AfxMessageBox(CString(m_MyControl.GetControl()->textBox1->Text));
OnOK();
}
Exempel: Ange textrutans text
Lägg till följande rad i implementeringen av BOOL CMFC01Dlg::OnInitDialog().
m_MyControl.GetControl()->textBox1->Text = "hello";
Nu kan du skapa och köra programmet. Observera att all text i textrutan visas i en popup-meddelanderuta när programmet stängs.
Se även
CWinFormsControl-klass
DDX_ManagedControl
CWnd::D oDataExchange