MDI——单例模式

【前言】

又一次接触到单例模式,原先只是学习了一下理论,现在通过机房个人重构来具体实践一番

【正文】

Why?

 Private Sub ToolStripMenuItemHelp_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItemHelp.Click

        Dim help As New frmHelp '实例化一个新的frmhelp窗体
        help.MdiParent = Me  '定义父窗体为frmMain
        help.Show()  '显示刚实例化的窗体

    End Sub

每点击一次帮助就生成一个窗口


解决这个问题就用到了——单例模式

What?

保证一个类仅有一个实例,并提供一个访问它的全局访问点

具体内容可以看以前写的一篇博客单例模式

How?

在帮助窗口中写

Public Class frmHelp

    Private Shared mdfhelp As frmHelp = Nothing '声明一个共享的变量help
    Private Sub New() '就是堵死了外界利用new创建此类实例的可能

        ' 此调用是设计器所必需的。
        InitializeComponent()

        ' 在 InitializeComponent() 调用之后添加任何初始化。
    End Sub

    Public Shared Function GetInstance() As frmHelp '写一个公有的方法返回新窗体
        If mdfhelp Is Nothing OrElse mdfhelp.IsDisposed Then
            mdfhelp = New frmHelp
            mdfhelp.MdiParent = frmMain.ActiveForm
        End If

        Return mdfhelp  '返回新的窗体
    End Function

End Class
然后在frmMain窗体中写

    Private Sub ToolStripMenuItemHelp_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItemHelp.Click

        frmHelp.GetInstance.Show()

    End Sub

【总结】

理论联系实际,实践检验理论。


评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值