c#中的mdi表单弹出窗口错误

本文关键字:窗口 错误 表单 中的 mdi | 更新日期: 2023-09-27 18:11:40

我有一个单独工作的表单,但是我想将它添加到mdi父表单。

问题是,我有一个小表单弹出,要求信息,然后传递信息到原始表单。

我用它来弹出表单:

Form2 fm = new Form2();
if (fm.ShowDialog(this) == DialogResult.OK)
{
    //do stuff
}

我在form2(弹出式表单)的第一行得到一个错误:

Form1 fm2 = (Form1)this.Owner;
fm2.lbText = this.textBox1.Text;

再次,这一切都工作良好,如果form1是一个独立的形式;但如果我使它成为一个子形式,我得到这个错误,当我点击OK上的form2返回到form1

消息=无法强制转换类型为"Partsbuddy2._0"的对象。菜单'输入'Partsbuddy2._0.Form1'.

c#中的mdi表单弹出窗口错误

this。所有者显然不是表单,而是菜单。显然,当你切换到MDI

时,会发生一件奇怪的事情

不使用Owner属性,您可以将自己的属性添加到Form2,其中包含对所有者表单的引用:

public Form OwnerForm {get; set;}

,然后创建新的Form2实例时,使用:

Form2 fm = new Form2() { OwnerForm = this };

,在Form2中,你用它来访问Form1:

Form1 fm2 = (Form1)this.OwnerForm;