如何检测从子窗体打开模态窗体? (C# & VS2017)

How to detect that a modal form is opened from a child form? (C# & VS2017)

也许这是一个愚蠢的问题,但我找不到解决方案。

我有一个包含多个子项的 MDI 表单。有一个我可以说是主要的。

为了检测主体不再使用而使用了另一个子表单,我使用了非常有效的 'Leave' 事件。

问题是从 mdi 窗体执行模式类型 (.ShowDialog()) 时,Leave 事件不会在子窗体中发生。

欢迎就如何获取它提出任何建议或意见。

你可以使用 this 只使用当前的 class ,这在你的情况下是 (main) .

我是这样解决的:

从调用模式窗体的 MDI 窗体中,我搜索子窗体,如果它是“主”窗体,我调用一个 public 函数,它与 Leave 的功能相同“主要”形式的事件:

foreach (Form childform in this.MdiChildren)
{
    if (childform.Name.Equals("MyMainForm"))
    {
        var formMain = (MyMainForm)childform;
        formMain.stopTimer();
    }
}

这可能是一个麻烦的解决方案,但它很实用。