每次都会触发用户控制负载

时间:2012-10-17 09:16:28

标签: c# user-controls mdi

我有一个在MDI子项中使用的usercontrol。我正在通过这样做来改变MDI子项关闭时的可见性。

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

但是当我将MDI表单的可见性更改为true时,即使未触发表单加载,也会触发用户控件加载事件。但是,如果是正常的窗口形式,则不会发生这种情况。

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

知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

来自UserControl Load事件的MSDN文档

  

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

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