弹出窗口在C#中的mdi表单上出错

时间:2013-05-01 01:01:39

标签: c# mdi

我有一个单独运行的表单,但我想将其添加到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'。

1 个答案:

答案 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;