2013-11-26 14 views
0

我有一個使用MdiParent在容器中創建窗體實例的窗體我也有一個使用telerik報表的打印按鈕爲此,我正在使用報表繁忙對話框來顯示正在開發的東西而報告正在生成,但報告創建後表單不會關閉。MdiParent它是否改變了所有者c#

如果我啓動窗體,此代碼工作正常。

Form[] forms = this.OwnedForms; 

      foreach (Form f in forms) 
      { 
       if (f is TrainingReportGeneratingForm) 
        f.Close(); 
      } 

,但如果我從父發動的形式,它不使用下面

EmployeeQualSkillForm form = new EmployeeQualSkillForm(employeeId, employeeName); 
        form.MdiParent = this; 
        form.PamsSysdbfBizLogic = pamsSysdbfBizLogic; 
        form.Show(); 

代碼這個生成形式被稱爲例如從打印按鈕

TrainingReportGeneratingForm form = new TrainingReportGeneratingForm(); 
       form.CancelGeneration += OnCancelGeneration; 
       form.Show(this); 
       backgroundWorker1.RunWorkerAsync(); 
+0

改爲使用MdiChildren屬性。或者更好的是,不要丟失你得到的「表單」引用,將它存儲在一個變量中。 –

回答

0

爲別人我不得不這樣做

FormCollection fc = Application.OpenForms; 
foreach (Form frm in fc) 
{ 
    if (frm is TrainingReportGeneratingForm) 
     { 
     frm.Hide(); 
     } 

}