当前位置:网站首页>C#应用程序界面开发基础——窗体控制(2)——MDI窗体
C#应用程序界面开发基础——窗体控制(2)——MDI窗体
2022-07-03 01:03:00 【DXB2021】
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子窗体的布局。
| 枚举成员 | 说明 |
| 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();
}
}
}
运行结果如下:

点击新建窗体:


层叠排列:

水平平铺:

垂直平铺:

边栏推荐
- Mongodb common commands of mongodb series
- Concise analysis of redis source code 11 - Main IO threads and redis 6.0 multi IO threads
- Basic remote connection tool xshell
- Create your first Kivy program Hello word (tutorial includes source code)
- tail -f 、tail -F、tailf的区别
- Button wizard play strange learning - go back to the city to buy medicine and add blood
- excel表格计算时间日期的差值,并转化为分钟数
- [flutter] icons component (fluttericon Download Icon | customize SVG icon to generate TTF font file | use the downloaded TTF icon file)
- Telephone network problems
- The R language uses the ctree function in the party package to build conditional inference decision trees, uses the plot function to visualize the trained conditional inference decision tree, and the
猜你喜欢

Embrace the safety concept of platform delivery
![1696C. Fishingprince plays with array [thinking questions + intermediate state + optimized storage]](/img/bf/ab6838e34a3074130eac0a9992e77c.png)
1696C. Fishingprince plays with array [thinking questions + intermediate state + optimized storage]

leetcode:701. 二叉搜索树中的插入操作【bst的插入】

JS inheritance and prototype chain

有向图的强连通分量
![[C language] detailed explanation of pointer and array written test questions](/img/24/c2c372b5c435cbd6eb83ac34b68034.png)
[C language] detailed explanation of pointer and array written test questions

Excel calculates the difference between time and date and converts it into minutes

MySQL - database query - basic query

异步、郵件、定時三大任務

Telephone network problems
随机推荐
一位苦逼程序员的找工作经历
【无标题】
1696C. Fishingprince plays with array [thinking questions + intermediate state + optimized storage]
Key wizard play strange learning - multithreaded background coordinate recognition
How is the mask effect achieved in the LPL ban/pick selection stage?
18_ The wechat video number of wechat applet scrolls and automatically plays the video effect to achieve 2.0
Leetcode 6103 - minimum fraction to delete an edge from the tree
Tp6 fast installation uses mongodb to add, delete, modify and check
基本远程连接工具Xshell
dotConnect for PostgreSQL数据提供程序
Database SQL language 01 where condition
Telephone network problems
Meibeer company is called "Manhattan Project", and its product name is related to the atomic bomb, which has caused dissatisfaction among Japanese netizens
MySQL - database query - condition query
d,ldc构建共享库
12_ Implementation of rolling automatic video playback effect of wechat video number of wechat applet
[self management] time, energy and habit management
按键精灵打怪学习-自动回城路线的判断
按键精灵打怪学习-多线程后台坐标识别
What operations need attention in the spot gold investment market?