码迷,mamicode.com
首页 > Windows程序 > 详细

重构—子窗体和父窗体

时间:2015-02-16 13:06:48      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:子窗体   父窗体   单例模式   

用单例模式实现子窗体在父窗体中显示,得到如下效果:

 

技术分享

 

代码如下:

 

在子窗体中写入单例模式

'当程序没有焦点的时候,最小化
    Private Sub frmStatusUI_Deactivate(senderAs Object, e As EventArgs) Handles Me.Deactivate
        If Me.WindowState <>FormWindowState.Minimized Then
            Me.WindowState =FormWindowState.Minimized
            'Me.ZOrder()
        End If
    End Sub
    Private Shared frmstatus As frmStatusUI
    '防止外界用new来创建此类实例
    Private Sub New()
        ' 此调用是设计器所必需的。
        InitializeComponent()
        ' 在 InitializeComponent() 调用之后添加任何初始化。
    End Sub
    ''' <summary>
    ''' 获得本类实例的唯一全局访问点
    ''' </summary>
    ''' <returns>返回窗体</returns>
    ''' <remarks></remarks>
    Public Shared Function GetInstance() AsfrmStatusUI
        If frmstatus Is Nothing OrElsefrmstatus.IsDisposed Then
            frmstatus = New frmStatusUI()
            '父窗体是MDI窗体
            frmstatus.MdiParent = frmMDIUI
        End If
        Return frmstatus
    End Function


MDI窗体中的调用:

Public SubToolStripMenuItem3_Click(sender As Object, e As EventArgs) HandlesToolStripMenuItem3.Click
        frmStatusUI.GetInstance.Show()
    End Sub

设计过程中还遇到一个问题,就是子窗体的菜单栏跑到父窗体中去了,如图:

 

技术分享

 

其实只要改一下菜单属性就欧克啦,将子窗体中的菜单栏的属性稍加修改,如下图:

 

技术分享

 

allowmerge属性改为false,再试,问题解决啦!

 

第一次机房的时候没有实现这个功能,这次通过单例模式学会了,当然在弄的时候遇到很多麻烦,最多的可能是不理解,这就说明出来混,总是要还的,所以大家还是踏踏实实的走好每一步吧,这样以后遇到问题才能迎刃而解!

重构—子窗体和父窗体

标签:子窗体   父窗体   单例模式   

原文地址:http://blog.csdn.net/xfz0330/article/details/43851269

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!