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;