1.设置父窗体

使用MDI窗体,需要先将父窗体的IsMdiContainer属性设置为True

2.生成用于MDI子窗体的窗体

 1  frmTemp f1 = new frmTemp();
f1.Text = "窗体1";
f1.MdiParent = this;
f1.Show(); frmTemp f2 = new frmTemp();
f2.Text = "窗体2";
8 f2.MdiParent = this;
f2.Show(); 11 frmTemp f3 = new frmTemp();
12 f3.Text = "窗体3";
f3.MdiParent = this;
14 f3.Show();

3.排列子窗体

层叠排列

   LayoutMdi(MdiLayout.Cascade);

水平平铺

1   LayoutMdi(MdiLayout.TileHorizontal);

垂直排列

   LayoutMdi(MdiLayout.TileVertical);

***********************************分割线**********************************

4.对于MDI,常用的是在父窗体中加载MDI子窗体,并且经常会在子窗体之间切换,实现的效果如下

1)创建两个不同的子窗体,并分别设置窗体的BackgroundImage,用于区分窗体

2)通过菜单栏的功能,选择对应的窗体

3)对于窗体,判断之前是否存在,进行不通的操作

代码如下:

     private void 企鹅ToolStripMenuItem_Click(object sender, EventArgs e)
{
//窗体没有创建或者窗体被释放
if (f2 == null || f2.IsDisposed == true)
{
f2 = new frmTemp2();
f2.FormBorderStyle = FormBorderStyle.None;
f2.MdiParent = this; //设置窗体的MDI父窗体
f2.Parent = this.panel1;//设置控件的父容器
f2.Dock = DockStyle.Fill;
f2.Show();
if (f1 != null)
f1.SendToBack();
}
else
{
f2.Activate();//使窗体获得焦点
f2.BringToFront();
}
}

所有的示例程序链接如下:

http://download.csdn.net/detail/u010312811/9446887

更新1:(因为程序修改不大,没有动之前上传的代码)

如何解决界面之间切换的闪烁问题:

修改两个MDI子界面的构造函数,如下:

   this.SetStyle(
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();

效果图如下:

 

MDI窗体的更多相关文章

  1. MDI窗体容器--2016年12月15日

    MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单, ...

  2. Winform MDI窗体容器、权限、简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  3. 小菜学习Winform(四)MDI窗体(附示例)

    前言 在做winfrom项目的时候我们可能会用到嵌套窗体,就是说一个容器中有多个窗体,可以分别管理和应用这些窗体,.net中提供了一种机制就是MDI,可能大家都会用,这边就简单的介绍下. 简单应用 w ...

  4. Winform MDI窗体容器,权限以及简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  5. Winform MDI窗体容器 权限 简单通讯

    MDI窗体容器 权限  using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  6. MDI窗体容器、权限设置

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  7. C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

    一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下 ...

  8. MDI窗体容器 权限设置

    MDI窗体容器:它可以让其它窗体在它的内部打开,无法超出它的范围将某个窗体的属性:IsMdiContainer设置为true - 窗口样式如何将其它窗体在它的内部打开?窗体对象名.MdiParent ...

  9. winform(MDI窗体容器、权限设置)

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

随机推荐

  1. centos 7.0 PHP 5.6.5 安装过程 (php+nginx)

    php网址 http://php.net/downloads.php 首先下载 php-5.6.5.tar.gz [root@localhost src]# wget http://cn2.php.n ...

  2. VC亲自教你写BP

    2015年5月24日下午,腾讯开放平台“创业ABC”沙龙在腾讯众创空间(上海)举行.活动以“创业融资实战——从计划书到如何估值到如何花钱”为主题,险峰华兴投资负责人徐建海先生现场分享<如何写BP ...

  3. yii2嵌入微信公众号支付

    原文地址:https://segmentfault.com/a/1190000005114556

  4. json_decode

    <?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ...

  5. jQuery版本升级踩坑大全

    背景 -------------------------------------------------------------------------------- jQuery想必各个web工程师 ...

  6. R语言学习笔记

    向量化的函数 向量化的函数 ifelse/which/where/any/all/cumsum/cumprod/对于矩阵而言,可以使用rowSums/colSums.对于“穷举所有组合问题" ...

  7. JQ分页功能

    HTML <div id='page'></div> <div id='con'></div> CSS span{width: 60px;height: ...

  8. 基本select语句的生命周期

    (1) 客户端sqlserver网络接口通过一种网络协议(可以是共享内存:简单高速,客户端和sql server在同一台计算机默认连接方式:TCP/IP:访问sql server最常用的一种协议,客户 ...

  9. PHP基础文件下载类的简单封装

    1: <?php 2: /** 3: * [FileDown 公用文件下载方法] 4: * @param [type] $filePath [文件路径(绝对路径或相对路径)] 5: */ 6: ...

  10. oracle数据表创建分区与查询

    场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果. 有两种方法,分别是手工设置分区 ...