能否从另一个窗体检测到表单关闭。 例如。 如果我有一个打开子窗体的主窗体,我是否可以在主窗体内检测到子窗体已关闭并执行代码?
我知道我可以在子窗体中创建事件处理程序,但这不是我想要的,因为我在子窗体关闭后要做的事情是在主窗体中进行的(对主窗体的更改)。
FormClosed事件是公共的,因此您可以从主表单中创建处理程序。
//Inside main Form. Click button to open new form
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.FormClosed += F2_FormClosed;
f2.Show();
}
private void F2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Form was closed");
}
public FormClosedEvent
。由于修饰符是public,您可以执行以下示例:SubForm subForm = new SubForm();
subForm.FormClosed += delegate
{
MessageBox.Show("subForm has closed");
};
subForm.ShowDialog();
ShowDialog()
方法,这将防止用户访问主表单,直到子表单已关闭。