1

我有一个在 MDI 子级内部使用的用户控件。当它关闭时,我正在更改该 MDI 子项的可见性。

private void MDIChild_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    this.Visible = false;
}

但是当我将 MDI 表单的可见性更改为 true 时,即使没有触发表单加载,也会触发用户控件加载事件。但这不会发生在普通 Windows 窗体的情况下。

基本上我需要在某些情况下禁用我的 MDI 孩子的关闭功能。

知道怎么做吗?

4

1 回答 1

2

来自UserControl Load事件的 MSDN 文档

如果 UserControl 是 MDI 子窗体的一部分,则每次显示子窗体时都会发生 Load 事件。在这种情况下,您应该将任何一次性初始化代码放在 UserControl 而不是 Load 事件处理程序中。

因此,当您显示 MDI 表单时,就满足了此条件。这意味着,在这种情况下,如果您依赖 UserControl 的 Load 事件,则应将其移至另一个方法并在显示 MDI 表单时显式调用该方法。

于 2012-10-17T09:22:55.813 回答