Partilhar via


Como: Fazer a ligação com o Windows Forms de dados DDX/DDV

DDX_ManagedControlchamadas CWinFormsControl::CreateManagedControl para criar um controle correspondência o controle de recurso de identificação. Se você usar DDX_ManagedControl para um CWinFormsControl control (no Assistente gerou código), você não deve chamar CreateManagedControl explicitamente para o mesmo controle.

Chame DDX_ManagedControl em CWnd::DoDataExchange para criar controles de recurso IDs. Para troca de dados, você não precisará usar as funções DDX/DDV com controles Windows Forms. Em vez disso, você pode colocar o código para acessar as propriedades do controle gerenciado no DoDataExchange o método de sua classe de diálogo (ou modo de exibição), como no exemplo a seguir.

O exemplo a seguir mostra como ligar a uma seqüência de C++ nativa para um.Controle de usuário de rede.

Exemplo

A seguir está um exemplo de ligação de dados DDX/DDV de uma seqüência de caracteres MFC m_str com o user-defined propriedade deNameText de um.NET user control.

O controle é criado quando CDialog::OnInitDialog chamadas CMyDlg::DoDataExchange pela primeira vez, portanto, qualquer código que faça referência a m_UserControl deve vir após a DDX_ManagedControl chamada.

Você pode implementar este código no aplicativo de MFC01 que você criou na Como: Criar o controle de usuário e o Host em uma caixa de diálogo.

Coloque o seguinte código na declaração de CMFC01Dlg:

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

Coloque o seguinte código na implementação 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);
   }
}

Agora, adicionaremos o método de manipulador de um clique no botão OK. Clique o o modo de exibição de recurso guia. No modo de exibição de recurso, clique duas vezes em IDD_MFC01_DIALOG. O recurso de caixa de diálogo é exibida no Editor de recursos. Clique duas vezes no botão OK..

Defina o manipulador da seguinte maneira.

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

E adicione a seguinte linha à implementação de CMFC01Dlg::OnInitDialog() de BOOL.

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

You can now build and run the application. Observe que qualquer texto na caixa de texto será exibido em uma caixa de mensagem pop-up quando o aplicativo é fechado.

Consulte também

Referência

CWinFormsControl Class

DDX_ManagedControl

CWnd::DoDataExchange