2011-05-08 50 views
0

在我的C#的WinForms項目,我有一些表格,我告訴他們中的一個作爲對話工作:的FormClosing委託不具有的ShowDialog()方法

MyForm mf = new MyForm(); 
mf.ShowDialog(); 

但是,當我嘗試assigne形式關閉事件對他們,它不工作;

mf.FormClosing += delegate { MessageBox.Show("Dialog is closed.")}; 

什麼問題?

P.S:當我使用mf.Show()方法調用窗體時,它工作正常。

謝謝。

回答

5

「不工作」是無望的含糊不清。您的代碼段中缺少一個分號。不得不猜測,在調用ShowDialog()後,不要指定FormClosing事件,這太遲了。這工作得很好:

private void button1_Click(object sender, EventArgs e) { 
     using (var mf = new Form2()) { 
      mf.FormClosing += delegate { MessageBox.Show("Dialog is closed."); }; 
      mf.ShowDialog(); 
     } 
    } 
+0

耶我彪是它不會觸發事件,你的代碼是現在的工作表示感謝。 – 2011-05-08 20:06:57

4

你使用的是什麼序列?首先你必須註冊事件,然後調用mf.ShowDialog()。

MyForm mf = new MyForm(); 
mf.FormClosing += delegate { MessageBox.Show("Dialog is closed.")}; 
mf.ShowDialog(); 

您在MessageBox寫 「對話框關閉」,但您註冊FormClosing。請注意,有一個FormClosed和一個FormClosing-事件。這是不同的事件。