我有一个单独运行的表单,但我想将其添加到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
是一个独立的表单,这一切都可以正常工作;但如果我将其设为子表单,则在form2
点击“确定”后返回form1
时会出现此错误。
Message =无法将'Partsbuddy2._0.Menu'类型的对象转换为'Partsbuddy2._0.Form1'。
答案 0 :(得分:4)
this.Owner显然不是形式而是菜单。显然,当您更改为MDI时会发生一些奇怪的事情
您可以将自己的属性添加到Owner
,而不是使用Form2
属性,其中包含对所有者表单的引用:
public Form OwnerForm {get; set;}
然后在创建新的Form2
实例时,使用:
Form2 fm = new Form2() { OwnerForm = this };
并在Form2
中使用此权限访问Form1
:
Form1 fm2 = (Form1)this.OwnerForm;