如何从一个mdi子窗体打开另一个子窗体?

milesma 2003-10-14 07:39:30
我在mdi父窗体中放了一个menu,有“new”、“open”选项。
在"new"选项的click事件中:
LP_Project.frmNew child=new LP_Project.frmNew(this);
frmNew.Show();
frmNew的构造函数:
public frmNew(LP_Project.LP_Container parent)
{
InitializeComponent();
this.MdiParent=parent;
}
注:LP_Project为namespace,LP_Container为父窗体,frmNew、frmOpen、frmEdit为子窗体。
以上好用。同样的方法构造了"open"事件和 窗体frmOpen。
现在单击frmOpen窗体上的一个button
LP_Project.frmContainer parent=new LP_Project.frmContainer();
LP_Project.frmEdit child=new LP_Project.frmEdit(parent);
child.Show();
当然,frmEdit的构造函数也有如下改动:
frmEdit(LP_Project.LP_Container parent)
{
InitializeCompoent();
this.MdiParent=parent;
}
目的想打开一个新窗口frmEdit,使这个窗体也是mdi子窗体
现在的问题是:点击按钮,没有任何反应。

如果不改动构造函数并且直接Show一个窗体(不是mdi的子窗体)
//LP_Project.frmContainer parent=new LP_Project.frmContainer();
LP_Project.frmEdit child=new LP_Project.frmEdit(); //将()中的parent拿掉了
child.Show();
————正常。

请大侠告知原因和解决办法。在线等待。



...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Stevetan81 2003-10-15
  • 打赏
  • 举报
回复
frmEdit frm=new frmEdit();
frm.MdiPatent=this.Mdipatent;
frm.show();
epsmagamaga 2003-10-15
  • 打赏
  • 举报
回复
这么麻烦么?
milesma 2003-10-15
  • 打赏
  • 举报
回复
谢谢大家,本人刚学C#,没考虑到frm.MdiParent=this.Mdiparent这句。
问题解决了,结贴。
zhehui 2003-10-14
  • 打赏
  • 举报
回复
frmPublic frmTemp = new frmPublic();

frmTemp.MdiParent = this.MdiParent;
frmTemp.Show();
我想做一下解释:
frmTemp.MdiParent = this.MdiParent; 最主要的是这一句
this指的是本窗体,也就是要打开别的窗体的子主窗。
在mdi中,真正的主窗体是this.MdiParent;
也就是说,每打开一个主窗体。都要指它的主窗体。
它们只有一个共同的主窗。
wolve 2003-10-14
  • 打赏
  • 举报
回复
楼上都说了

cellblue 2003-10-14
  • 打赏
  • 举报
回复
这个问题说得太麻烦了,看得很费解

frmPublic frmTemp = new frmPublic();

frmTemp.MdiParent = this.MdiParent;
frmTemp.Show();
hcfalan 2003-10-14
  • 打赏
  • 举报
回复
我想问题应该出在frameOpen窗体的Button事件里
既然frameOpen也是一个子窗体,那么可以这样试试:
LP_Project.frmEdit child=new LP_Project.frmEdit(this.MdiParent);
child.Show();

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧