أشكال النوافذ، والحصول على خاصية من النموذج الأصلي
سؤال
وأواجه قليلا من المشكلة. لدي DataTable وفي النموذج الأصل. I فتح نموذج dialogbox أن يحصل على الممتلكات DataTable وويخلق checkboxlist. وسوف تستخدم هذه لتصدير هذه الأعمدة. ولكن عند تشغيل التطبيق الملكية parentform فارغة. لقد حاولت وضع في النموذج الأصل وdialogbox (توليت هذا كان قد تم التلقائى إذا كان يسمى ShowDialog ()).
ويمكن للشخص أن نلقي نظرة ورؤية أين أنا ذاهب خاطئة؟ من dialogbox:
frmParent MyParentForm = (frmParent)this.ParentForm;
for (int i=0; i<MyParentForm.DataGridTable.Count; i++)
{
chkListExportItems.Add(MyParentForm.DataGrid.Columns[i].Name,true);
}
ومن النموذج الأصلي:
frmExports MyForm = new frmExports();
MyForm.MdiParent = this;
if (MyForm.ShowDialog == DialogResult.OK)
{
MyForm.SelectedItems // Do something
}
المحلول
وتعطي إشارة إلى DataGridTable إلى شكل dialogbox الخاص بك. تستطيع تمريرها في منشئ. يجب تجنب استخدام الوالد / ParentForm وتجنب الصب.
نصائح أخرى
1) "MdiParent" هو ملك خاطئة للاستخدام.
2) دعوة MyForm.ShowDialog (هذا)؛
و3) استخدام "this.Owner" في شكل مشروط.
لا تنتمي إلى StackOverflow