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
}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top