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.