2013-08-25 50 views
0

這是我的場景,希望您能爲我解決它已擁有的表單和mdi父項

我有一個名爲「MainForm」的MDI容器窗體。在MainForm中有一個簡單的表單調用「Form1」。在Form1中有一個按鈕。每次你推它時,它都會打開一個新的表格「Form2」的實例。 followng代碼是點擊按鈕事件。

Button_Click() 
{ 
    Form2 frm=new Form2(); 
    frm.mdiparnt=this.MdiParent; 
    this.addOwnedForm(frm); 
    frm.Visible=true; 
} 

和下面的代碼試圖關閉所有的形式,當用戶關閉Form1

Form1_CloseEvent() 
{ 
    foreach(var item in this.ownedForm) 
    { 
     item.close(); 
    } 
} 

但是當調試步入關閉事件,只是關閉Form1和Form2的情況下,保持開放。我應該怎麼做才能解決這個問題

+0

'Form1_CloseEvent()'方法在哪裏? – Shaharyar

+1

由於MainForm已經是所有者,Form2不能既是MdiChild也是Form1作爲所有者。這個代碼如何運行,但沒有得到任何懷疑?... –

回答

1

我想你並沒有設置事件。像這樣做。

將它添加到您的Button_Click()方法:

this.FormClosed += Form1_FormClosed; 

這裏是方法:

void Form1_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    foreach(var item in this.ownedForm) 
    { 
     item.close(); 
    } 
} 
1

首先這段代碼不能編譯!

你有幾個語法錯誤:mdiparntaddOwnedFormownedFormclose

你可能不分享您的實際代碼,並且會是幫你一個問題,如果它不是你的代碼。

現在Button_Click()事件中,你正在做的

frm.mdiparnt=this.MdiParent; 
this.AddOwnedForm(frm); 

即使你只需要

this.AddOwnedForm(frm); 

或將引發異常。我已經檢查過這個代碼,它的工作很好