Windows Form, ottenendo una proprietà dal modulo principale
Domanda
Sto riscontrando un piccolo problema. Ho un datatable nel modulo genitore. Apro un modulo di finestra di dialogo che ottiene la proprietà datatable e crea un elenco di controllo. Questo sarà usato per esportare quelle colonne. Ma quando eseguo l'applicazione la proprietà parentform è nulla. Ho provato a impostarlo nel modulo genitore e nella finestra di dialogo (supponevo che sarebbe stato fatto automagicamente se si fosse chiamato ShowDialog ()).
Qualcuno può dare un'occhiata e vedere dove sbaglio? Dalla finestra di dialogo:
frmParent MyParentForm = (frmParent)this.ParentForm;
for (int i=0; i<MyParentForm.DataGridTable.Count; i++)
{
chkListExportItems.Add(MyParentForm.DataGrid.Columns[i].Name,true);
}
Dal modulo principale:
frmExports MyForm = new frmExports();
MyForm.MdiParent = this;
if (MyForm.ShowDialog == DialogResult.OK)
{
MyForm.SelectedItems // Do something
}
Soluzione
Fornisci un riferimento a DataGridTable al modulo della finestra di dialogo. Puoi passarlo nel costruttore. Dovresti evitare di usare Parent / ParentForm ed evitare il casting.
Altri suggerimenti
1) "MdiParent" è la proprietà sbagliata da usare.
2) Chiama MyForm.ShowDialog (questo);
3) Usa " this.Owner " in forma modale.