C# 弹出窗口给出了C中mdi表单的错误#

C# 弹出窗口给出了C中mdi表单的错误#,c#,mdi,C#,Mdi,我有一个单独运行良好的表单,但我想将其添加到mdi父表单中 问题是我有一个弹出的小表单,请求信息,然后将信息传递给原始表单 我用这个弹出表单: Form2 fm = new Form2(); if (fm.ShowDialog(this) == DialogResult.OK) { //do stuff } 我在表单2的第一行(弹出式表单)上得到一个错误: 同样,如果form1是一个独立的表单,这一切都很好;但如果我将其设置为子表单,当我单击form2上的“确定”返回到form1时,

我有一个单独运行良好的表单,但我想将其添加到
mdi
父表单中

问题是我有一个弹出的小表单,请求信息,然后将信息传递给原始表单

我用这个弹出表单:

Form2 fm = new Form2();

if (fm.ShowDialog(this) == DialogResult.OK)
{
    //do stuff
}
我在
表单2
的第一行(弹出式表单)上得到一个错误:

同样,如果
form1
是一个独立的表单,这一切都很好;但如果我将其设置为子表单,当我单击
form2
上的“确定”返回到
form1
时,会出现此错误

消息=无法将“Partsbuddy2.\u 0.Menu”类型的对象强制转换为“Partsbuddy2.\u 0.Form1”类型


这个。所有者显然不是表单,而是菜单。很明显,当您切换到MDI时会发生一件奇怪的事情

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

public Form OwnerForm {get; set;}
然后在创建新的
Form2
实例时,使用:

Form2 fm = new Form2() { OwnerForm = this };
Form2
中,您可以使用它访问
Form1

Form1 fm2 = (Form1)this.OwnerForm;

这个。所有者显然不是表单,而是菜单。很明显,当您切换到MDI时会发生一件奇怪的事情

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

public Form OwnerForm {get; set;}
然后在创建新的
Form2
实例时,使用:

Form2 fm = new Form2() { OwnerForm = this };
Form2
中,您可以使用它访问
Form1

Form1 fm2 = (Form1)this.OwnerForm;