MDI窗体与单例模式

本文探讨了MDI窗体与单例模式,MDI窗体用于实现同时打开多个文档界面,通过设置IsMdiContainer属性为true启用。而单例模式确保类只有一个实例,常用于资源管理,如任务管理器。两者在软件设计中有着密切关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

    本篇博客小编来总结总结一下MDI窗体和单例模式,别看一个是窗体一个是设计模式,里面可有不少好玩的东西值得探究呢!


MDI窗体

Where

    这个要说到SDI窗体(单文档窗体),它只能打开一个文档。而我们通常的操作中,往往要打开多个文档。例如,我们的机房收费系统,操作员可能要同时查看学生信息表对学生进行注册,这时就要打开两个或者多个窗体,这时,MDI窗体就可以做到了。

What

    总结来说,MDI窗体就是允许用户同时打开多个文档界面。

How

    MDI的使用非常的简单方便,只需要将窗体的IsMdiContainer属性设置为true即可


单例模式

Where

    这个时候我们可以联想计算机中的任务管理器,无论你点击多少次,它只弹出来一次。为什么会这样呢?一,弹出多次会造成资源浪费。二、不同时刻弹出来的任务管理器也不一样,例如里面显示的CPU占用率、内存使用率,这让用户怎么看嘛!所以,无论我们点击多少次,它都只弹出来一次,这就引来了单例模式。

What

     确保一个东西只能有一个,如果在编程的角度来看,就是确保一个类只能实例化一个实例,并且自行实例化并向整个系统提供这个实例。

     这个我们还可以想到我们的机房收费系统,例如我想点击充值按钮打开充值界面,使用单例模式无论如何只实例化一个充值窗体,这在一定程度上减少资源浪费。

How

    一张图足以说明单例模式。单例模式只有一个Singleton类并且为private属性,提供唯一的一个对类的实例共享。内部提供GetInstance方法,让客户可以访问它的唯一实例。

  

两者关系

    MDI窗体和单例模式可谓是相辅相成的好兄弟关系。一个小demo可以很好的证明他们之间的关系:

//父窗体
public Form1()
        {
            InitializeComponent();
            //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置
            this.IsMdiContainer = true;
        }

//点击子窗体按钮,打开子窗体,设置为当前父窗体的子窗体,并且调用窗体中的到单例模式
 private void frmChildren_Click(object sender, EventArgs e)
        {   
            FrmChildren child = FrmChildren.GetWindow();//调用方法
            child.MdiParent = this;//设置child的父窗体为当前窗体
            child.Show();           
        }

//子窗体,单例模式,声明GetWindow可调用方法
  public partial class FrmChildren : Form
    {
        private FrmChildren() //由 public FrmChildren改为 private FrmChildren
        {
            InitializeComponent();
        }
        static FrmChildren fc = null; 创建一个静态对象
        public static FrmChildren GetWindow()
        {   //当子窗体没有开启或者已经释放。就可以创建新窗体
            if (fc==null||fc.IsDisposed)
            {
                fc = new FrmChildren();
            }
            return fc;
        }
    }

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值