【问题标题】:Owned form and mdi parent拥有的表单和 mdi 父级
【发布时间】:2013-08-27 20:46:05
【问题描述】:

这是我的情况,希望你能帮我解决

我有一个名为“MainForm”的 MDI 容器表单。在 MainForm 中有一个简单的表单调用“Form1”。在 Form1 中有一个按钮。每次你推它,它都会打开一个新的表单,它是“Form2”的实例。以下代码为点击按钮事件。

Button_Click()
{
   Form2 frm=new Form2();
   frm.mdiparnt=this.MdiParent;
   this.addOwnedForm(frm);
   frm.Visible=true;
}

当用户关闭 Form1 时,以下代码会尝试关闭拥有的表单

Form1_CloseEvent()
{
   foreach(var item in this.ownedForm)
   {
      item.close();
   }
}

但是当调试器进入关闭事件时,只需关闭 Form1,而 form2 实例保持打开状态。我该怎么做才能解决它

【问题讨论】:

  • Form1_CloseEvent() 方法在哪里存在?
  • Form2 不能既是 MdiChild 又将 Form1 作为所有者,因为 MainForm 已经是所有者。该代码甚至如何在没有异常的情况下运行?...

标签: c# winforms forms


【解决方案1】:

我认为您没有设置活动。这样做。

将其添加到您的 Button_Click() 方法中:

this.FormClosed += Form1_FormClosed;

方法如下:

void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    foreach(var item in this.ownedForm)
    {
        item.close();
    }
}

【讨论】:

    【解决方案2】:

    首先这段代码无法编译!

    您有几个语法错误:mdiparntaddOwnedFormownedFormclose

    您可能没有共享您的实际代码,如果不是您的代码,这将是一个问题。

    现在在Button_Click()你正在做的活动

    frm.mdiparnt=this.MdiParent;
    this.AddOwnedForm(frm);
    

    即使你只需要

    this.AddOwnedForm(frm);
    

    否则将引发异常。我检查了这段代码,它工作得很好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多