Aracılığıyla paylaş


Windows Forms ile DDX/DDV Veri Bağlaması Nasıl Yapılır

DDX_ManagedControl kaynak denetim kimliğiyle eşleşen denetim oluşturmak için CWinFormsControl::CreateManagedControl'ü çağırır.CWinFormsControl denetimi için (sihirbaz tarafından oluşturulmuş kodda) DDX_ManagedControl kullanıyorsanız, aynı denetim için ayrıca CreateManagedControl'ü çağırmamalısınız.

Kaynak kimliklerinden denetim oluşturmak için CWnd::DoDataExchange'de DDX_ManagedControl'ü çağırın.Veri değişimi için, Windows Formları denetimleriyle DDX/DDV işlevlerini kullanmanız gerekmez.Bunun yerine, aşağıdaki örnekte gösterildiği üzere, yönetilen denetimin özelliklerine erişmek için iletişim (ya da görünüm) sınıfınızın DoDataExchange yöntemine kod yerleştirebilirsiniz.

Aşağıdaki örnek yerel C++ dizesinin .NET kullanıcı denetimine nasıl bağlanacağını göstermektedir.

Örnek

Aşağıdaki, .NET kullanıcı denetiminin kullanıcı tanımlı NameText özelliğiyle m_str MFC dizesinin DDX/DDV veri bağlamasına bir örnektir.

Denetim CDialog::OnInitDialogCMyDlg::DoDataExchange'i ilk kez çağırdığında oluşturulur, böylece m_UserControl'a başvuru içeren herhangi bir kod DDX_ManagedControl çağrısından sonra gelmelidir.

Bu kodu Nasıl yapılır: İletişim Kutusunda Kullanıcı Denetimi Ve Konak Oluşturma'ta oluşturduğunuz MFC01 uygulamasında uygulayabilirsiniz.

Aşağıdaki kodu CMFC01Dlg'nin bildirimine koyun:

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

Aşağıdaki kodu CMFC01Dlg'nin uygulamasına koyun:

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

Şimdi Tamam düğmesine tıklama için işleyici yöntem ekleyeceğiz.Kaynak Görünümü sekmesine tıklayın.Kaynak Görünümü'nde, IDD_MFC01_DIALOG'a çift tıklayın.Kaynak Düzenleyicisi'nde iletişim kaynakları görünür.Sonra Tamam düğmesine çift tıklayın.

İşleyiciyi aşağıdaki gibi tanımlayın.

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

BOOL CMFC01Dlg::OnInitDialog()'un uygulamasına aşağıdaki satırı ekleyin.

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

Artık uygulamayı derleyebilir ve çalıştırabilirsiniz.Metin kutusundaki tüm metinlerin uygulama kapandığında açılır ileti kutusunda görüntüleneceğine dikkat edin.

Ayrıca bkz.

Başvuru

CWinFormsControl sınıfı

DDX_ManagedControl

CWnd::DoDataExchange