2008-10-31 77 views
5

我遇到了一些問題。我有一個父表單中的數據表。我打開一個獲取datatable屬性的對話框窗體並創建一個複選框列表。這將用於導出這些列。但是當我運行該應用程序時,parentform屬性爲null。我已經嘗試在父窗體和對話框窗體中設置它(如果ShowDialog()被調用,我認爲這會自動完成)。Windows窗體,從父窗體獲取屬性

有人可以看看,看看我要去哪裏錯了嗎? 從對話框:

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 
} 

回答

3

給一個參考DataGridTable你的對話框形式。你可以在構造函數中傳遞它。 你應該避免使用Parent/ParentForm並避免投射。

3

1)「MdiParent」是使用的錯誤屬性。

2)調用MyForm.ShowDialog(this);

3)以模態形式使用「this.Owner」。

+0

你能詳細說明一下嗎? – 2013-01-26 12:31:44