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. thinkphp 3.2 视图模型 实例 视图查询结果 二维数组 合并

    使用视图模型查询的时候 结果是这样的 array(6) { [0] => array(5) { ["picTitle"] => string(7) "标题2& ...

  2. iwebshop二次开发(2)

    设置模板为mini模式,类似于JSP中的sitemesh public $layout='site_mini'; 登录模块实现 function wuliu_login() { //如果已经登录,就跳 ...

  3. android自定义控件(5)-实现ViewPager效果

    对于系统的ViewGroup我们已经是十分熟悉了,最常用的LinearLayout和RelativeLayout几乎是天天要打交道,下面我们就来看看,如何一步一步将其实现: 一.首先当然也是最通常的新 ...

  4. vim 中 也可以 直接安装 emmet 直接使用zen coding 生成 l指定个数的 lorem ipsum文字.

    超链接的写法: 当作为链接的文字, 比较长时, 整个作为链接 就显得不是 很适合. 可以取其中的某一个单词 作为 超链接的 关键字:如: click here to continue emmet中如何 ...

  5. MyBatis动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) ...

  6. 连接到kali linux服务器上的MySQL服务器错误

    前言:想把数据库什么的都放在虚拟机kali Linux里,但无奈出了好多错误. 首先:可以参照上一篇文章开启kali服务器端的远程连接功能,上一篇文章 然后:使用window端的sqlyog(MySQ ...

  7. Apache索引目录浏览的学习笔记

    在浏览一些镜像文件站的时候,会发现网站目录是可以浏览文件(夹)列表的.举两个例子:网易开源镜像:Ubuntu.只要 Web 服务器是基于 Apache 的网站都可以开启或禁止索引(目录浏览),那么如何 ...

  8. 图解Tomcat类加载机制

    说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷. 之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,与我们自己的web项目整合后无法直接断点调试.后来同 ...

  9. 可编辑select

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. svn搬移到gitlab及使用

    svn是一款非常简便,易用的源代码管理工具,用了这么多年,对它情有独钟.都说习惯最难改,那为何要搬移到gitlab上呢? 喜欢尝试新东西,前提还是git比较强大,svn有的它都有,svn没有的它也有. ...