+ -
当前位置:首页 → 问答吧 → 父窗体和子窗体问题

父窗体和子窗体问题

时间:2011-12-14

来源:互联网

问题描述:
有个父窗体F_Main,调用一个设置参数的窗体F_form1,F_form1点击其按钮“下一步”可以打开F_form2,F_form2点击“完成”按钮打开窗体F_child,怎么才能将窗体F_child的父窗体设置为F_Main?????
主体直接调用的话就直接 F_child.mdiparent=this;但是这里用不上this了,是不是应该做个全局变量或者方法获取主窗体句柄?
请求高手解决!

作者: csliusanpidn   发布时间: 2011-12-14

可以设置一个全局变量因为你的F-Main似乎只有一个实例,

作者: stonespace   发布时间: 2011-12-14

要不然你就层层传递F_Main的引用,F_form1传给F_form2,F_form1传给F_child,

作者: stonespace   发布时间: 2011-12-14

再要不然,你可以让F_form1不直接打开F_form2,F_form2 也不直接打开F_child,而是让它们都调用F_Main的一个方法来打开其他窗体,这样你就可以用this指针了,

作者: stonespace   发布时间: 2011-12-14

我感觉你好像不是要做 MDI 窗体.
显示某窗体的时候, 在 Show() 中给个父窗体的引用句柄不行么?
或者设置该窗体的 Parent 属性不行么?
你的父窗体句柄是不是丢了? 可以想个办法传递过来.

作者: pitsou7   发布时间: 2011-12-14

建议F_form1,F_form2,F_child打开的顺序关系写在主窗体之内,而不是让他们之间相互调用。

F_form1 frm1 = new F_form1();

if (frm1.ShowDialog() == DialogResult.OK)
{
  F_form2 frm2 = new F_form2();

  if (frm2.ShowDialog() == DialogResult.OK)
  {
  F_child frmChild = new F_child();
  frmChild.Mdiparent = this;
  frmChild.Show();

  }
}

}

作者: fangbuge   发布时间: 2011-12-14