子窗体上巧用单例模式

原创 2013年12月05日 21:26:58

      最近在合作开发机房收费系统的时候,想要避免出现子窗体被多次实例化的问题,这个问题一直没有想通怎么解决,最近在网上查相关的资料的时候,找到了解决问题的办法——单例模式。

     为什么这么说呢?单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点。

     其模式结构图如下:

 

       其创建两个类,一个是父窗体MdiParent,一个是子窗体FormChild,在父窗体上添加菜单控件MenuStrip,如下图:

 

       代码如下:

 '定义子窗体的静态变量
    Private Shared frmChild As New FormChild

    ''' <summary>
    ''' 显示子窗体
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Form1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1ToolStripMenuItem.Click
        Dim frmChild As FormChild = GetChildForm()
        frmChild.Show()
    End Sub

    ''' <summary>
    ''' 获得子窗体
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function GetChildForm() As FormChild

        If frmChild Is Nothing Or frmChild.IsDisposed Then
            frmChild = New FormChild
            frmChild.MdiParent = Me
        End If
        Return frmChild
    End Function

        那么,用单例模式的好处是什么呢?除了它可以保证唯一的实例化,它还可以减少应多次实例化,导致内存空间的浪费。此外,它还可以严格控制客户怎么访问它以及何时访问它,简单得说就是对唯一实例的受控访问。

 

创建型模式之单例模式(多文档窗口)

package cn.factory5; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimen...
  • zenglinshan
  • zenglinshan
  • 2015年10月31日 12:27
  • 1635

C#设计模式---观察者模式简单例子

在开发过程中经常遇到一个模块中的 一个方法调用了其他模块中相关的方法 比如说在一个系统中,如果出现了错误,就调用专门进行错误处理的模块中的方法进行错误处理 而因为错误处理的操作有很多,所以将这些具...
  • qq1010885678
  • qq1010885678
  • 2014年07月27日 11:44
  • 1840

简单工厂模式--结合实例学习简单工厂模式

在讲解简单工厂模式之前,有必要先了解一下OO的一些原则   1. OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。也就是说,对于一个已有的软件...
  • u012116457
  • u012116457
  • 2014年03月20日 22:02
  • 3945

单例模式——解决MDI子窗体实例化的问题

机房收费系统进行有一段时间了,但是始终有些历史遗留问题。比如,如何MDI子窗体如何显示在上层的问题和MDI子窗体实例化的问题。         对于如何显示在上层的问题,我这次采用的还是SetPare...
  • lhc2207221755
  • lhc2207221755
  • 2014年06月01日 21:33
  • 2503

利用单例模式操作MDI主窗体与其相关子窗体

1、MDI主窗体点击弹出其所属的子窗体(MDIMainForm窗体下的代码示例) private void barBtnProjectType_ItemClick(object se...
  • u010553683
  • u010553683
  • 2013年06月15日 20:52
  • 409

C#创建窗体的单例模式

  • 2016年04月24日 10:47
  • 47KB
  • 下载

单例模式实现mdi界面子窗体控制

  • 2011年04月21日 16:08
  • 43KB
  • 下载

单例模式--只能弹出一个窗体

  • 2011年03月07日 11:26
  • 41KB
  • 下载

C# 窗体的单例模式

  • 2014年06月12日 09:00
  • 49KB
  • 下载

Silverlight:在MVVM模式中打开子窗体(Child Window)

转载于 http://www.cnblogs.com/888h/archive/2010/12/08/1900149.html 这篇文章主要展示在Silverlight4的应用程序中,用MVVM模式...
  • afei198409
  • afei198409
  • 2013年04月30日 03:28
  • 1623
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:子窗体上巧用单例模式
举报原因:
原因补充:

(最多只允许输入30个字)