三个form设置父子窗口的问题

trim8 2007-05-11 11:35:00
现有窗口:form1、form2、form3
想要在form2的Load()事件中将form3设置为from1的子窗口

请教会的老师。

form2_Load()
{
form2.IsMdiContainer = true;

Form3 wnd = new Form3();
wnd.MdiParent = ???
wnd.Show();
}

...全文
214 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeoMaya 2007-05-11
  • 打赏
  • 举报
回复
上面的方法是在Form1里面完成Form2的初始化, 如果楼主不想这样, 可以就要用到静态变量了, 又或者用Singleton Pattern

e.g.

public partial class Form1: Form
{
private static volatile Form1 _instance;
private static object syncRoot=new object();

public Form1()
{
//to initialize Form1 here...
}

public static Form1 Instance
{
get
{
if(_instance == null)
{
lock(syncRoot)
{
if(_instanc == null)
{
_instance = new Form1();
}
}
}
return _instance;
}
}
}

//Then, in your Form2, you can...
form2_Load()
{
form2.IsMdiContainer = true;

Form3 wnd = new Form3();
wnd.MdiParent = Form1.Instance;//=========>See?
wnd.Show();
}
LeoMaya 2007-05-11
  • 打赏
  • 举报
回复
//form2 constructor
public Form2(Form1 instance)
{
//other code here...
_instance=instance;
}

private Form1 _instance;

form2_Load()
{
form2.IsMdiContainer = true;

Form3 wnd = new Form3();
wnd.MdiParent = _instance;
wnd.Show();
}

//Form1 somewhere, to initailize a form2
private void InitializeForm2()
{
Form2 frm2=new Form2(this);
frm2.Show();
}

trim8 2007-05-11
  • 打赏
  • 举报
回复
分数很少,你却能细致回答!
非常感谢 LeoMaya(postreetboy) ,我的问题已经解决!
谢谢!

110,534

社区成员

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

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

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