捕获子窗体c#的关闭事件

本文关键字:事件 窗体 | 更新日期: 2023-09-27 17:49:37

在winform应用程序中,我有一个主窗体和其他窗体。当我点击主表单中的"x"时,我想触发另一个表单的FormClosing事件。

@Update:

代码:

程序中:

frmMain frm = new frmMain();
frm.ShowDialog();
在frmMain:

private void btnFrm2_Click(object sender, EventArgs e)
{
   Frm2 f2 = new Frm2();
   f2 .Show();
}
在Frm2:

private void frm2_FormClosing(object sender, FormClosingEventArgs e)
{
     //something
}

关闭frmMain时如何触发frm2_FormClosing事件?我知道我可以在关闭frm2时触发它,但是我想在关闭frmMain时触发它。

捕获子窗体c#的关闭事件

使用观察者模式,你可以在主表单上发生FormClosing或任何其他动作时通知订阅(子表单)。在subscribent的处理程序中,你可以引发它的FormClosing事件(subscribent, childform)或做任何你想做的事情。

  1. 主要形式为主题
  2. 子表单订阅主题(主表单)
  3. 主表单在您选择的操作中引发notify事件(在您的情况下可能是formClosing)
  4. 所有订阅者得到通知(他们的"通知"事件被引发)
  5. 在"通知"事件中,你可以做任何你想做的事情,例如引发订阅(子表单)的formClosing事件

我相信这种模式是直接的和非常灵活的。我用它来更新多对多相关形式的数据