2013-04-13 75 views
2

將表單事件滯留在另一表單中。如何以其他形式正確收聽表單事件

當我嘗試關閉Form2時,Form1上沒有任何反應。當Form2關閉時,我想在Form1中做些什麼。

這是我爲Form1

代碼
public partial class Form1: Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 

       Form2 frm2= new Form2(); 
       frm2.FormClosing += new FormClosingEventHandler(frm2_FormClosing); 
      } 

      void frm2_FormClosing(object sender, FormClosingEventArgs e) 
      { 
       throw new NotImplementedException(); 
      } 

回答

2

您需要出示您正在實現它的FormClosing事件的對象。由於你創建的新對象在你的構造函數中,我假設frm2不是你正在顯示的表單,這意味着你沒有處理事件。

public Form1() 
{ 
    InitializeComponent(); 

    Form2 frm2 = new Form2(); 
    frm2.FormClosing += frm2_FormClosing; 
    frm2.Show();  
} 

void frm2_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    MessageBox.Show("Form2 is closing"); 
} 
2

創建窗口2的新實例,並聽取其關閉事件 - 但是從你貼的代碼,你永遠不要表現出來?不知道我錯過了什麼,但你認爲應該如何工作 - 例如:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Form2 frm2 = new Form2(); 
      frm2.FormClosing += frm2_FormClosing; 
      frm2.Show(); 
     } 

     void frm2_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      MessageBox.Show("form 2 closed"); 
     } 
    }