检测新创建的表单何时关闭

时间:2018-06-09 08:56:59

标签: c# winforms

我有Form1和我的主要形式。 在我的代码的某些部分,我这样做:

Form2 f2=new Form2(); 
f2. ShowDialog()

我想做以下操作:在Form1中,我想检测Form2何时关闭并在那种情况下做一些事情?
怎么做?

3 个答案:

答案 0 :(得分:1)

试试这个:

        private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2=new Form2();
        f2.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form2_FormClosed);
        f2.ShowDialog();
    }

     void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        MessageBox.Show("my code");
    }

答案 1 :(得分:0)

  

我想做以下几点:在Form1中,我想检测Form2何时关闭并在那种情况下做一些事情?

使用模态对话框时不需要“检测”。您可以在对话框类中添加拦截,但除非您想要阻止关闭,否则只需执行以下操作即可。

变化:

Form2 f2=new Form2(); 
f2.ShowDialog()

...为:

Form2 f2=new Form2(); 
f2.ShowDialog(); // this will block your app until Form2 closes

// If we get here, then it means Form2 has closed
// Add your code here
// ...
// ...
// ...

答案 2 :(得分:0)

首先,您需要将.ShowDialog();更改为.Show(this);,因为在调整第二个表单后,您的代码将在表单关闭后运行。

您应该为Closing事件创建一个新方法,如下所示:

private void FormIsClosing(object sender, FormClosingEventArgs e)
{
    // Some stuff you want to do on close
}

然后在您创建Form2的某个位置,您需要将此方法分配给Closing事件。这样做:

var f2 = new Form2(); // Create a form
f2.FormClosing += new System.Windows.Forms.FormClosingEventHandler(FormIsClosing); // Add event handler
f2.Show(this); // Run this form

这应该可以解决问题