أشكال النوافذ، والحصول على خاصية من النموذج الأصلي

StackOverflow https://stackoverflow.com/questions/253038

سؤال

وأواجه قليلا من المشكلة. لدي 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" في شكل مشروط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top