我有3種形式。關閉從另一種形式的MDI子窗體
- main_frm是MDI
- app_frm是孩子MDI ,顯示在progress_frm形式app_frm
的進步
private void frm_progress_Closing(object sender, FormClosingEventHandler e)
{
Form currentForm = Form.ActiveForm;
Form app_frm_temp = currentForm.ActiveMdiChild;
app_frm_temp.Dispose();
}
我在期待表格app_frm會關閉並終止它正在做的任何事情。但那不會發生..只有progress_frm窗體關閉,我仍然看到app_frm運行時小時玻璃,仍然運行它的進程/線程。
我的目標是,如果用戶想要中止並關閉app_frm啓動的進程,他們將能夠從progress_frm中終止並關閉app_frm?
在下面的反饋之後,我嘗試了下面的內容,我的表單沒有觸及結束事件,因爲我從另一個表單複製並粘貼了它,然後我繼續進行progress_frm的設計部分,並對此產生了一個令人困惑的事件: (:
private void progress_frm_FormClosing(object sender, FormClosingEventArgs e)
{
Form currentForm = Form.ActiveForm;
foreach (Form frm in currentForm.MdiParent.MdiChildren)
{
if (frm.GetType() == currentForm.GetType())
{
frm.Focus();
return;
}
}
}
我得到當循環訪問currentForm ..記住一個空例外「對象引用不設置到對象的實例」我的我是這不是MDI配置的一部分progress_frm ...我想引用和關閉/終止其父爲main_frm的子表單app_frm ...我知道currentForm是main_frm,但不知道爲什麼它不會找到子表單,所以我可以參考它??我試着改變循環到「currentForm.MdiChildren」,仍然得到了相同的空引用異常......
我想我明白MDI的概念,但現在我得到了如何能夠正確地引用它們混淆
如果兩個frm_progress和app_frm是一回事兒Mdi的父母然後我不這麼認爲有任何需要使用Form.ActiveForm;而不是在foreach循環,使用this.MdiParent.MdiChildren ...而且,爲了關閉窗體替換'frm.Focus()'與'frm.Close()' – Waqas