编程技巧:C# mdi子窗体简单教程

一、参照自带例子做个mdi窗体

  1、加入父窗体MainForm,并加入一个菜单栏,new form1 form2 windows

  2、给new加命令

 


     private int childFormNumber = 0;
  private void newToolStripMenuItem_Click(object sender, EventArgs e)
  {
  Form childForm = new Form();//创建一个子窗体
  childForm.MdiParent = this;//这一句很重要
  childForm.Text = "窗口" + childFormNumber++;//窗体标题
  childForm.Show();//显示之
  }

 

  现在试一下,按菜单new能生成子窗体了。但是,当所有的子窗体最大化,下面的会被最前面的挡住,如何把它们找出来呢?这就要用到菜单windows项了(不一定要叫windows,随便的),

  3、网上都说把windows菜单的MdiWindowListItem属性设为true,不过我在vs2008中没有找到。可以这样设置,打开MainForm.Designer.cs,在“Windows 窗体设计器生成的代码”一段中加一句“this.menuStrip1.MdiWindowListItem = this.windowsToolStripMenuItem;”(当你们的菜单名称不一样时自己改)。现在,再按菜单new后,windows下面会自动加入新生成的子窗体名称,跟word一样。

  二、显示自己制作的窗体

  其实上面的例子没有多在实际用处,除非每个人都去编写字板。好,现在做一个小小的改进。在子窗体中显示自己制作的窗体。

  在工程中新建两个窗体Form1,Form2,分别给form1和form2菜单加入命令。

 


    private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
  {
  Form1 form1 = new Form1();
  form1.MdiParent = this;
  form1.Show();
  }
  private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
  {
  Form2 form2 = new Form2();
  form2.MdiParent = this;
  form2.Show();
  }

 

  现在点击form1和form2后,能在子窗体中分别显示工程中的Form1和Form2窗体了。但是这也没有实际用处(网上很多教程都止于这一步),因为当你点击了两下form1后,子窗体中会显示两个一模一样的Form1窗体,实际编程中显然是没用的,比如我的工程项目中想在Form1窗体中设置几个参数,Form1只要显示一个就够了。下面再做点改进,

 


     private static Form1 form1;
  private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
  {
  if (form1==null ||form1.IsDisposed){
  form1 = new Form1();
  form1.MdiParent = this;
  form1.Show();}
  else { form1.Activate(); }
  }
  private static Form2 form2;
  private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
  {
  if (form2 == null || form2.IsDisposed)
  {
  form2 = new Form2();
  form2.MdiParent = this;
  form2.Show();
  }
  else { form2.Activate(); }
  }

 

  这样,Form1和Form2窗体只会被实例化一次。即当Form1窗体显示时,再点击form1时,Form1不会再创建一个,而只是把在下面的提到最前面显示,变成激活的活动窗体。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值