我有Form1
和我的主要形式。
在我的代码的某些部分,我这样做:
Form2 f2=new Form2();
f2. ShowDialog()
我想做以下操作:在Form1中,我想检测Form2何时关闭并在那种情况下做一些事情?
怎么做?
答案 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
这应该可以解决问题