Udostępnij za pośrednictwem


Porady: powiązanie danych DDX/DDV za pomocą interfejsu Windows Forms

DDX_ManagedControl wywołuje CWinFormsControl::CreateManagedControl, aby utworzyć kontrolkę zgodną z identyfikatorem kontrolki zasobu. Jeśli używasz DDX_ManagedControl kontrolki CWinFormsControl (w kodzie generowanym przez kreatora), nie należy wywoływać CreateManagedControl jawnie tej samej kontrolki.

Wywołaj metodę DDX_ManagedControl cWnd ::D oDataExchange , aby utworzyć kontrolki na podstawie identyfikatorów zasobów. W przypadku wymiany danych nie trzeba używać funkcji DDX/DDV z kontrolkami Windows Forms. Zamiast tego można umieścić kod, aby uzyskać dostęp do właściwości zarządzanej kontrolki w DoDataExchange metodzie klasy okna dialogowego (lub widoku), jak w poniższym przykładzie.

W poniższym przykładzie pokazano, jak powiązać natywny ciąg języka C++ z kontrolką użytkownika platformy .NET.

Przykład: powiązanie danych DDX/DDV

Poniżej przedstawiono przykład powiązania danych DDX/DDV ciągu m_str MFC z właściwością zdefiniowaną NameText przez użytkownika kontrolki użytkownika platformy .NET.

Kontrolka jest tworzona podczas pierwszego wywołania CMyDlg::DoDataExchange metody CDialog::OnInitDialog, więc każdy kod, który odwołuje m_UserControl się, musi pochodzić po wywołaniuDDX_ManagedControl.

Ten kod można zaimplementować w aplikacji MFC01 utworzonej w temacie Instrukcje: tworzenie kontrolki użytkownika i hosta w oknie dialogowym.

Umieść następujący kod w deklaracji CMFC01Dlg:

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

Przykład: Implementowanie doDataExchange()

W implementacji pliku CMFC01Dlg umieść następujący kod:

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);
   }
}

Przykład: Dodawanie metody obsługi

Teraz dodamy metodę obsługi dla kliknięcia przycisku OK. Kliknij kartę Widok zasobów. W widoku zasobu kliknij dwukrotnie pozycję IDD_MFC01_DIALOG. Zasób okna dialogowego zostanie wyświetlony w Edytorze zasobów. Następnie kliknij dwukrotnie przycisk OK.

Zdefiniuj procedurę obsługi w następujący sposób.

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

Przykład: Ustawianie tekstu textBox

Dodaj następujący wiersz do implementacji BOOL CMFC01Dlg::OnInitDialog().

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

Teraz możesz skompilować i uruchomić aplikację. Zwróć uwagę, że każdy tekst w polu tekstowym będzie wyświetlany w oknie podręcznym komunikatu po zamknięciu aplikacji.

Zobacz też

Klasa CWinFormsControl
DDX_ManagedControl
CWnd::D oDataExchange