f.MdiParent = this;

er4gfg 2011-04-16 09:45:03
Form2 f = new Form2();
f.MdiParent = this;

this的意思不是引用当前类的实例吗?这里怎么看起来像是一个变量呢?如果可以这样用的话,为什么不可以把this换成Form1呢?
...全文
299 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
rocket2010 2011-04-16
  • 打赏
  • 举报
回复
Form2 f = new Form2();
f.MdiParent = this;

this的意思不是引用当前类的实例吗?这里怎么看起来像是一个变量呢?如果可以这样用的话,为什么不可以把this换成Form1呢?




肯定不能换成Form1的啦,你试试看看会不会提示错误! 不过这个问题我也搞不懂来。
Hamber_Bao 2011-04-16
  • 打赏
  • 举报
回复
this为C#中的一个关键字,代表当前类的实例对象。
类就是类,没有引用的东西。你怎么指定。必须将类的对象复制给MidParent属性。
机器人 2011-04-16
  • 打赏
  • 举报
回复
f2.IsMdiContainer = true; 去掉。。。
如果设置了 IsMdiContainer 就不能设置 MdiParent

看看提示信息。找本书先看看。。。
er4gfg 2011-04-16
  • 打赏
  • 举报
回复
Form2 f2 = new Form2();
f2.MdiParent = this; //我只添了这句
f2.IsMdiContainer = true;
f2.Show();

Form3 f3 = new Form3();
f3.MdiParent = f2;
f3.Show();

为什么报错呢,我只添了一句,意思大概是Form1是Form2的父窗体,Form2是Form3的父窗体
也就是说,可不可以嵌套子窗体...子窗体里面再包含子窗体
机器人 2011-04-16
  • 打赏
  • 举报
回复
MdiParent 指向谁,谁就是父容器。

上面的代码 form2 是 form3 的父容器。

都改为 this 就是 form1 是父容器。
er4gfg 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fangxinggood 的回复:]
你再弄一个Form3


C# code
Form2 f2 = new Form2();
f2.IsMdiContainer = true;
f2.Show();

Form3 f3 = new Form3();
f3.MdiParent = f2;
f3.Show();
[/Quote]
f2和f3怎么没在Form1里面呢?Form1的IsMdiContainer属性我也是设置的true啊?
机器人 2011-04-16
  • 打赏
  • 举报
回复
你再弄一个Form3

Form2 f2 = new Form2();
f2.IsMdiContainer = true;
f2.Show();

Form3 f3 = new Form3();
f3.MdiParent = f2;
f3.Show();
机器人 2011-04-16
  • 打赏
  • 举报
回复
a.Show() 会触发 Form1_Load, Form1_Load 里又调用 a.Show()。

你觉得会怎么样?堆栈溢出。。。
er4gfg 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fangxinggood 的回复:]
在 Program.cs 的 Main() 里,第一个窗体不需要Show, Application.Run会启动这个窗体。

Application.Run(new FormXX());
[/Quote]
那请问,下面的代码为什么报错?
private void Form1_Load(object sender, EventArgs e)
{
Form1 a = new Form1();
a.Show();
}
机器人 2011-04-16
  • 打赏
  • 举报
回复
在 Program.cs 的 Main() 里,第一个窗体不需要Show, Application.Run会启动这个窗体。

Application.Run(new FormXX());
er4gfg 2011-04-16
  • 打赏
  • 举报
回复
this.show(); ??
当前窗体show出来的语句在哪里?
机器人 2011-04-16
  • 打赏
  • 举报
回复
this 不是当前窗体么?当前窗体不是已经show出来了.
er4gfg 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fangxinggood 的回复:]
a 没show出来,哪来的childForm?
[/Quote]
Form2 f = new Form2();
f.MdiParent = this;
f.Show();
还不是只有f.Show();为什么又显示出来了呢?
机器人 2011-04-16
  • 打赏
  • 举报
回复
a 没show出来,哪来的childForm?
er4gfg 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxinggood 的回复:]
Form1 f1 = new Form1();
Form2 f = new Form2();
f.MdiParent = f1;

就是把引用交给 MdiParent 属性,把 f1 交给 MdiParent 当然也OK
[/Quote]
不过,这样怎么弹出不来呢
private void menuItem3_Click(object sender, EventArgs e)
{
Form1 a = new Form1();
Form2 f = new Form2();
f.MdiParent = a;
f.Show();
}
机器人 2011-04-16
  • 打赏
  • 举报
回复
Form1 f1 = new Form1();
Form2 f = new Form2();
f.MdiParent = f1;

就是把引用交给 MdiParent 属性,把 f1 交给 MdiParent 当然也OK
JustLovePro 2011-04-16
  • 打赏
  • 举报
回复
This是C#中一个关键字!

110,532

社区成员

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

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

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