C#学习记录

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)从“继承选择器”对话框中选择添加的继承窗体的基窗体后,单击“确定”按钮,完成继承窗体的添加。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值