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. XML简介

    xml的简介(了解) * eXtensible Markup Language:可扩展标记型语言                       ** 标记型语言:html是标记型语言          ...

  2. C#实现Excel模板导出和从Excel导入数据

    午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...

  3. linux静态库的生成与使用(转)

    linux静态库的生成与使用(转) 库是一种软件组件技术,库里面封装了数据和函数. 库的使用可以使程序模块化. Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件). Linu ...

  4. winScp上传文件时,如何过滤制定文件

    在用winScp上传文件时,有些文件不想上传到服务器上.怎么办呢? 比如我希望过滤.svn .git文件和目录怎么操作呢? 第一步:在菜单上选中选项,点击选项. 第二步,点击传输->编辑 第三步 ...

  5. ESI 动态缓存技术

    任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP ...

  6. vtk第一个程序

    首先 设置环境变量 解决方案资源管理器 选中项目名字 而不是ALL_BUILD 选项卡 项目-属性 右侧 附加依赖项->编辑 kernel32.libuser32.libgdi32.libwin ...

  7. ADB常用命令(Android Debug Bridge)

    首先要配置环境变量. adb devices 列出所有的设备 adb start-server 开启adb服务 adb kill-server    关闭adb服务 adb logcat    查看L ...

  8. <a>标签跳转传值。

    <a href="public_html/app/Tpl/song_1/inc/{url r="deal#support" p="id=$deal_inf ...

  9. Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件

    在Mac下安装好了PHP开发环境(PHP-FPM,Nginx,MySql), 想设置成开机自启动,原来以为和一般的Linux系统一样,也是在rc.d这样目录放置启动脚本.在网上查了一些资料,发现苹果应 ...

  10. python 中文编码问题

    1.文件首#coding=utf-8 作用:为了把文件内容编码python所识别的utf-8,若不指定编码格式,则会出现以下错误: 2. 文件储存指定编码为utf-8 作用:将文件编码成utf-8.如 ...