2015-05-29 89 views
5

我有一個帶有按鈕的Form1。當您單擊該按鈕時,此代碼塊將執行:知道何時關閉子表單

Form2 frm = new Form2(); 
frm.Name = "Form" + musteriNumarasi.ToString(); 
frm.Text = "Kullanıcı - " + musteriNumarasi.ToString(); 

可以說我點擊了三次。現在有四種形式:Main,Child1,Child2,Child3。當用戶關閉其中一個子窗體時,主窗體需要知道哪一個窗體被關閉。我怎樣才能做到這一點?

+3

一種方法是讓父母監聽孩子的表格關閉事件。 – ryanyuyu

+0

要麼在父窗體上爲孩子的關閉事件建立一個監聽器,要麼在孩子的關閉事件中語義較少,您可以在主窗體上執行代碼。 –

+0

訂閱FormClosed事件。爲每個特定的孩子或普通孩子使用專用的事件處理程序,* sender *參數會告訴您哪一個已關閉。 –

回答

8

訂閱Closed Event

Form2 frm = new Form2();  
frm.FormClosed += new FormClosedEventHandler(Form_Closed); 

void Form_Closed(object sender, FormClosedEventArgs e) 
{ 
    Form2 frm = (Form2)sender; 
    MessageBox.Show(frm.Name); 
} 
+0

爲什麼有人投我的答案? –

+0

這給出了一個編譯錯誤。 錯誤\t CS0029 \t無法將類型'System.EventHandler'隱式轉換爲'System.Windows.Forms.FormClosedEventHandler' – Boggartfly

-2

這些行添加到您的代碼來處理關閉或關閉表格的情形

frm.Closing += Form_Closing; 
frm.Closed += Form_Closed; 

添加以下方法到當前類

void Form_Closing (object sender,EventArgs e){ 
//Handler form Closing Event 
} 
void Form_Closed (object sender,EventArgs e){ 
//Handler form Closed Event 
} 
+0

'sender'將成爲引發事件的Form對象的引用 – Aladdin

+0

您應該真正編輯您的答案,而不是使用註釋。 – ryanyuyu

+0

此評論只是一個提示,可以幫助我解答問題。 – Aladdin

-2
Form2 frm = new Form2(); 

frm.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frm _FormClosed); 

。 。 。

private void frm_FormClosed(object sender, EventArgs e) 
{ 
    //Runs after closing child :) 
} 
相關問題