Form.Load 使用 Form.Show 时未引发事件,但使用 Form.ShowDialog 时引发事件

Form.Load Event not raised when using Form.Show, but raised when using Form.ShowDialog

当我通过 Form.Show() 打开表单时,打开的表单的 Show Event 没有出现。

但是当我使用 Form.ShowDialog() 时,事件被引发并且我的断点在我的 Form_Shown 方法中命中。

我看到this answer,异常隐藏了事件,但我没有发现异常。

那么,为什么当我调用 ShowDialog(), but not if I call Show() 时会引发事件?

这里是link to a demo。当我单击 ShowDialog() 按钮时,我看到带有加载和显示事件的消息框,但是对于 Show() 我只看到加载事件。

using (var form = new Form2())
{
  form.Show();
}

Using 块将立即处理您的表单,因为 Show 不会阻​​止代码。 ShowDialog 将阻止代码,直到表单关闭,因此,该版本有效。