MDI窗体

单文档界面(SDI)

多文档界面(MDI)

MDI窗体的概念

MDI窗体(Multiple-Document Interface,多文档界面)用于同时显示多个文档。

在项目中使用MDI窗体时,通常将一个MDI窗口窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。

设置MDI窗体

1、MDI容器窗体

将某个窗体设置为窗口窗体,有两种方法:

1、在窗体的“属性”面板中,将IsMidContainer属性设置为True即可。

False:

True:

2、在窗体的Load事件中加入以下语句

代码如下:

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){this.IsMdiContainer = true;}}
}

2、设置MDI子窗体

MDI子窗体就是一般的窗体。只需要将某个窗体实例的MdiParent属性设置到一个MDI父窗体,它就是那位父窗体的子窗体,语法格式如下:

窗体实例名.MdiParent=父窗体对象;

设置MDI容器:

修改后:

从Form5属性里,通过Name属性来进行修改为“MainForm”

修改后:

Text属性表示窗体标题,修改为“MDI窗体”

修改后:

新建子窗体(Form1.cs、Form2.cs、Form3.cs、Form4.cs):

代码内容:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Form5
{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void MainForm_Load(object sender, EventArgs e){Form1 form1 = new Form1();form1.Show();form1.MdiParent = this;Form2 form2 = new Form2();form2.Show();form2.MdiParent = this;Form3 form3 = new Form3();form3.Show();form3.MdiParent = this;Form4 form4 = new Form4();form4.Show();form4.MdiParent = this;}}
}

完成后:

运行结果如下:

排列MDI窗体

语法格式如下:

public void LayoutMdi(MdiLayout value)

value是MdiLayout的枚举值之一,用来定义MDI子窗体的布局。

MdiLayout的枚举成员
枚举成员 说明
Cascade 层叠排列MDI子窗体
TileHorizontal 水平平铺MDI子窗体
TileVertical 垂直平铺MDI子窗体

新建一个Windows窗体应用程序,在Name属性中将窗体唯一标识符命名为MainForm,并且在Text属性中,将主窗体的标题命名为“MDI窗体”。

在菜单栏中选择“视图”命令 ,再选择“工具箱”命令,就会弹出工具箱。

在工具箱中选择MenuStrip控件,此时就会在窗体中出现一排菜单栏,并依次输入“新建窗体”、“层叠排列”、“水平平铺”、“垂直平铺”、“关闭”。

接着,再将IsMdiContainer属性设置为True。

再创建一个子窗体,并命名为“ChildForm”,下面就可以通过双击菜单项,进行添加事件。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Form5
{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void MainForm_Load(object sender, EventArgs e){Form1 form1 = new Form1();form1.Show();form1.MdiParent = this;Form2 form2 = new Form2();form2.Show();form2.MdiParent = this;Form3 form3 = new Form3();form3.Show();form3.MdiParent = this;Form4 form4 = new Form4();form4.Show();form4.MdiParent = this;}private void 新建窗体ToolStripMenuItem_Click(object sender, EventArgs e){ChildForm mychildForm=new ChildForm();mychildForm.Show();mychildForm.MdiParent = this;}private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e){LayoutMdi(MdiLayout.Cascade);}private void 水平平铺ToolStripMenuItem_Click(object sender, EventArgs e){LayoutMdi(MdiLayout.TileHorizontal);}private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e){LayoutMdi(MdiLayout.TileVertical);}private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e){Close();}}
}

运行结果如下:

点击新建窗体:

层叠排列:

水平平铺:

垂直平铺:

C#应用程序界面开发基础——窗体控制(2)——MDI窗体相关推荐

  1. C#应用程序界面开发基础——窗体控制(6)——菜单栏、工具栏和状态栏控件

    菜单栏.工具栏和状态栏控件 菜单栏描述了一个窗体的大致功能和风格.通过工具栏能够快速执行相应的功能,并且具有和菜单一样的功能,而状态栏常用于显示 一些状态信息. 1.菜单控件 菜单(MunuStrip ...

  2. 黑马 程序员——Java基础---流程控制

    黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...

  3. 小程序界面开发实现各种机型自适应

    小程序界面开发实现各种机型自适应 目录 小程序基本的机型大小 小程序自适应原理 这是我创建的demo 如何实现自适应 目录 小程序基本的机型大小 (320,568),(375,667),(414,73 ...

  4. android 开发桌面应用程序,安卓开发基础教程-Android多界面应用程序开发

    开篇 本文阅读需10分钟,简单易上手,属于安卓开发教程的基础部分. 建议精读,深刻理解大意.多做实践.多写代码. 本文章由做全栈攻城狮原创首发. 同名公众号已开启,官网www.8z5.net. 本套教 ...

  5. java图形界面详解_JAVA 图形界面开发基础详解

    与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解. 1.Java提供的图形界面类有哪些? Java提供了两套图形界面 (1)AWT组建(基础) AWT组件是jdk ...

  6. Android界面开发基础

    前言 安卓开发(指原生开发)和普通的Java开发,web开发最大的不同是什么?界面.老早的Java awt/swing以及现在的JavaFX,里面的UI库和安卓完全不是一个体系.至于web开发的各种U ...

  7. 微信小程序云开发基础版也开始收费了

    发现问题 之前把菜谱小程序的爬虫服务由SpringBoot迁移为了基于Node.js的微信云开发,原因是当时想为本来配置就不高的云服务器腾出一点地方,想当初云开发基础版还是免费的,因为基础版确实适合用 ...

  8. java 创建mdi窗体_Java制作MDI窗体源代码是什么?

    由于实际需要做一个MDI窗体,百度里面找到一个不错的源代码给大家分享一下.import javax.swing.*; import java.awt.event.*; import java.awt. ...

  9. C#应用程序界面开发进阶——高级窗体控件(5)——MonthCalender控件

    MonthCalendar控件用来查看和设置日期信息.它是一个可视化网络图形界面,风格内包含月份的编号日期,这些日期排列在周一至周日下方的七个列中.用户可以单击月份标题任何一侧的箭头按钮来选择不同的月 ...

最新文章

  1. php中类和对象的操作
  2. R语言dplyr包移除dataframe数据列实战(Remove Columns)
  3. 转:Oracle 应用服务器 MapViewer 10.1.2截图
  4. MySQL千万级数据JDBC插入
  5. CodeForces - 1553F Pairwise Modulo(数论+树状数组)
  6. Hexo-fluid主题设置统计博客阅读量
  7. 第4章 同步控制 Synchronization ----同步机制的摘要
  8. java.util.ConcurrentModificationException的解决办法
  9. 兄弟j220怎么清零_兄弟j220怎么清零_兄弟Brother全系列打印机清零大全
  10. EditPlus 3使用技巧收集
  11. Windows安装Redis并设置为开机启动
  12. DV EV OV证书
  13. mysql32位的能装在64位的电脑上吗_32位电脑能装64位系统吗|怎么看32位电脑可不可以装64位系统-系统城...
  14. 操作系统镜像资源下载
  15. android开发 重启app
  16. HTB靶场系列 linux靶机 Sense靶机
  17. 纯干货!视频控件VideoCapX的使用指南和常见问题合集
  18. STM32之MDK分析,分散加载
  19. 微信小程序+云函数+腾讯云对话机器人API(ChatBot)
  20. Springboot毕设项目烬燃电竞酒店管理系统7xgz8(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 科技成就及其文化特质
  2. 面经 - 小红书 数据分析师
  3. 【计组】学习笔记1.1:8421码和ASCII码
  4. 题目:用*号输出字母C的图案。
  5. Spring MVC关于源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
  6. java电子病历系统源码
  7. 转载:android:marginStart,marginEnd,marginLeft,marginRight的意义
  8. 全球与中国现代口服尼古丁市场深度研究分析报告
  9. 全球与中国铝导体合金增强(ACAR)市场现状及未来发展趋势(2022)
  10. asixs 响应慢_想开始慢跑锻炼,入手一双asics跑鞋怎么选?