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