【前言】
又一次接触到单例模式,原先只是学习了一下理论,现在通过机房个人重构来具体实践一番
【正文】
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
【总结】
理论联系实际,实践检验理论。