重构—子窗体和父窗体_小太阳在发光的博客-CSDN博客

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

计算机生成了可选文字: 砚曦叮馨落井一般用户操作员一,以之J下机卡号:学号:专业:上机日期:上机时间:消费时间,厂一类型:}姓名:}性别:厂一下机日期:下机时间:「消费金额:余额:L一下一叫查二{画{匡刃匡习卜查二{卫舀’百{匹到·,学…!画{…亘…{互11·,修…}至舀l亘…匡互卜查…匡司匡刃匡互状态

代码如下:

在子窗体中写入单例模式

'当程序没有焦点的时候,最小化    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

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

计算机生成了可选文字: 机房收参系询上机管理查看学生上机记录查看学生充值记录查看学生余额修改密码退出查看学生上机状态匡到匹互…匾习卡号上机时间气口口口口勺上机日期机器名---―〔日日日日日日日日日日日阵绮与阵忍困蔺口叹墉翻口口

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

计算机生成了可选文字: 曰(DataBindings)(Name)Acce、sibleDe,criPtiorAccessibleNameAcce"ibleRoleAllowDropA1lowltemReorderMenustriplDefaultAnchorAutosizeBackColorBackgroundlmageBackgroundlmageLa、ContextMenustripDockEnabled曰FontGenerateMember国Gri0MarainTop.LeftTrUeContro}园口口Tile园TopTrUeMicrosoffYaHeiU瓦9TrUe2.2.0.2

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

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


原网址: 访问
创建于: 2023-04-17 09:52:38
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论