C#winform 之MDI容器

MDI是指将多控件窗体在同一窗体中打开,可以设置重叠打开,平捕打开等,MDI窗体(Multiple-Document Interface,多文档界面)用于同时显示多个文档。在项目中使用MDI窗体时,通常将一个MDI窗口窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。

一、基本设置

1.1 设置:属性中IsMDIContainer:true;

当然,也可以在程序设定

private void frmMain_Load(object sender, EventArgs e)
{
    this.IsMdiContainer = true;
}

1.2 子级窗体在MDI中打开,需先设置位于MDI窗体中

Form1 f3 = new Form1();
f3.MdiParent = this;        
f3.Show();

1.3 窗口打开最大化

f3.WindowState=FormwindowState.Maximized

二、实例化测试

2.1 新建一个主窗口,命名为 主窗口,并将IsMdiContainer设为True

 2.2 再新建2个子窗口,分别命名为Child1,Child2

 

 2.3 将Child1和Child2加载到主窗口中,代码如下:

namespace MDI容器学习1
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            Child1 child1 = new Child1();
            child1.MdiParent = this;
            child1.Show();

            Child2 child2 = new Child2();
            child2.MdiParent = this;
            child2.Show();
        }
    }
}

三、通过菜单来生成新窗口

3.1  在刚才的主窗口,新建安菜单

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

 3.2 下面通过双击菜单项,进行添加窗口,具体代码如下:

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 MDI容器学习1
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            Child1 child1 = new Child1();
            child1.MdiParent = this;
            child1.Show();

            Child2 child2 = new Child2();
            child2.MdiParent = this;
            child2.Show();

        }

        private void 新建窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Child1 NewChild3 = new Child1();
            NewChild3.MdiParent = this;
            NewChild3.Show();
            
        }

        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();
        }
    }
}

 3.3 MDI窗体排列

排列MDI窗体

public void LayoutMdi(MdiLayout value)

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

Cascade层叠排列MDI子窗体
TileHorizontal水平平铺MDI子窗体
TileVertical垂直平铺MDI子窗体
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值