Практическое руководство. Привязка данных DDX/DDV к элементам управления Windows Forms
DDX_ManagedControl вызывает CWinFormsControl::CreateManagedControl, чтобы создать элемент управления, соответствующий идентификатору элемента управления ресурсами. Если вы используете DDX_ManagedControl
для элемента управления (в созданном мастером CWinFormsControl
коде), не следует явно вызывать CreateManagedControl
для того же элемента управления.
Вызовите DDX_ManagedControl
CWnd ::D oDataExchange для создания элементов управления из идентификаторов ресурсов. Для обмена данными не требуется использовать функции DDX/DDV с элементами управления Windows Forms. Вместо этого можно поместить код для доступа к свойствам управляемого элемента управления в DoDataExchange
методе класса диалогового окна (или представления), как показано в следующем примере.
В следующем примере показано, как привязать собственную строку C++ к пользовательскому элементу управления .NET.
Пример: привязка данных DDX/DDV
Ниже приведен пример привязки данных DDX/DDV строки m_str
MFC с определяемым NameText
пользователем свойством пользовательского элемента управления .NET.
Элемент управления создается при первом вызове CMyDlg::DoDataExchange
CDialog::OnInitDialog, поэтому любой код, который ссылается m_UserControl
на них, должен поступать после DDX_ManagedControl
вызова.
Этот код можно реализовать в приложении MFC01, созданном в разделе "Практическое руководство. Создание пользовательского элемента управления и узла в диалоговом окне".
Поместите следующий код в объявление CMFC01Dlg:
class CMFC01Dlg : public CDialog
{
CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_MyControl;
CString m_str;
};
Пример. Реализация DoDataExchange()
Поместите следующий код в реализацию 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);
}
}
Пример. Добавление метода обработчика
Теперь мы добавим метод обработчика для нажатия кнопки "ОК". Перейдите на вкладку "Представление ресурсов". В представлении ресурсов дважды щелкните значок IDD_MFC01_DIALOG
. Ресурс диалогового окна отображается в редакторе ресурсов. Затем дважды нажмите кнопку "ОК".
Определите обработчик следующим образом.
void CMFC01Dlg::OnBnClickedOk()
{
AfxMessageBox(CString(m_MyControl.GetControl()->textBox1->Text));
OnOK();
}
Пример. Установка текста в текстовом поле
И добавьте следующую строку в реализацию BOOL CMFC01Dlg::OnInitDialog().
m_MyControl.GetControl()->textBox1->Text = "hello";
Теперь можно выполнить сборку и запуск приложения. Обратите внимание, что любой текст в текстовом поле будет отображаться во всплывающем окне сообщения при закрытии приложения.
См. также
Класс CWinFormsControl
DDX_ManagedControl
CWnd::D oDataExchange