MDI窗体
MDI窗体就是多文档界面窗体,用于同时显示多个文档。
MDI窗体中通常有包含子菜单的菜单窗口,用于在窗口或文档之间进行切换
在使用MDI窗体要先设置父窗体
设置父窗体只需要在要设置的窗体属性中IsMdiContainer属性设置为True
如图所示
设置完父窗体还要设置子窗体
假设有四个子窗体
代码如下
Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();
Form3 frm3 = new Form3();
frm3.MdiParent = this;
frm3.Show();
Form4 frm4 = new Form4();
frm4.MdiParent = this;
frm4.Show();
Form5 frm5 = new Form5();
frm5.MdiParent = this;
frm5.Show();
然后再通过MenuStrip控件来设置几个按键使这些子窗体可以运作
例如
然后双击这些按键进行代码编写,使他们有实际的作用
加载子窗体
private void 加载子窗口ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();
Form3 frm3 = new Form3();
frm3.MdiParent = this;
frm3.Show();
Form4 frm4 = new Form4();
frm4.MdiParent = this;
frm4.Show();
Form5 frm5 = new Form5();
frm5.MdiParent = this;
frm5.Show();
}
水平平铺
private void 水平平铺ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
垂直平铺
private void 垂直平铺ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
}
层叠排列
private void 层叠排列ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}
将这些汇总起来,再加上上一次的关闭提示代码如下:
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 WindowsFormsApp1
{
public partial class Form1 : Form
{
public static void Run(Form mainForm)
{
Application.Run(new Form1());
}
public Form1()
{
InitializeComponent();
}
private void Form1_FormCLosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("请您确认是否退出(Y/N)", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
e.Cancel = false;//允许退出系统
}
else
{
e.Cancel = true;//阻止退出系统
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void 加载子窗口ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.MdiParent = this;
frm2.Show();
Form3 frm3 = new Form3();
frm3.MdiParent = this;
frm3.Show();
Form4 frm4 = new Form4();
frm4.MdiParent = this;
frm4.Show();
Form5 frm5 = new Form5();
frm5.MdiParent = this;
frm5.Show();
}
private void 水平平铺ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
private void 垂直平铺ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
}
private void 层叠排列ToolStripMenuItem_Click_1(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}
}
}
效果如下
继承窗体
继承窗体就是根据现有窗体的结构创建一个与其一样的新窗体,这种从现有窗体继承的过程称为可视化继承(我理解为复制粘贴)
创建继承窗体的方法有两种
1.编程方式创建继承窗体
通过编程方式创建继承窗体时,主要是在类定义中将引用添加到要从其继承的窗体。引用应包含该窗体的命名空间,后面跟一个句点,然后是基窗体本身的名称。
2.使用继承选择器创建窗体
继承窗体或其他对象的最简便方法是使用“继承选择器”对话框。通过该对话框,就可利用已经在其他解决方案中创建的代码或用户界面。为了使用“继承选择器”对话框从某个窗体继承,包含该窗体的项目必须已生成为可执行文件或DLL。若要生成项目,可以选择“生成”菜单中的“生成解决方案”命令。下面介绍如何使用继承选择器创建继承窗体。
(1)在“解决方案资源管理器”面板的项目名称上单击鼠标右键,在弹出的快捷菜单中选择“添加”/“新建项”命令,打开“添加新项”对话框。
(2)从“添加新项”对话框中选择继承的窗体后,单击“添加”按钮,打开“继承选择器”对话框。
(3)从“继承选择器”对话框中选择添加的继承窗体的基窗体后,单击“确定”按钮,完成继承窗体的添加。