机房收费系统集锦(一)---打开重复窗体
2014-05-25 21:56
211 查看
做机房重构的时候,发现每次执行打开某个窗体的命令,如打开“注册”,都会新建一个新窗体。
分析了下原因,因为每个窗体在打开之前都会进行实例化,每次实例化后的都是新窗体,所以会出现这个问题。
为解决此问题,我们可以用下面的方法,大家如果有更简单的可以提出来或分享链接~~~
请看Code。
我把它写在了一个类模块里,只需要UI层直接调用就可以了。
分析了下原因,因为每个窗体在打开之前都会进行实例化,每次实例化后的都是新窗体,所以会出现这个问题。
<pre class="vb" name="code"> Dim frmCR As New frmRegister '实例化注册窗体frmRegister frmCR.MDIParent=Me 'frmCR为父窗体的子窗体,Me指父窗体(frmMain)
frCR.Show()
为解决此问题,我们可以用下面的方法,大家如果有更简单的可以提出来或分享链接~~~
请看Code。
Public Class PreventSameForm '防止出现重复窗体 Public Shared Sub ShowMDIForm(ByVal MDIChildForm As Form, ByVal MDIParentForm As Form) Dim MDIChildFrm As Form = MDIChildForm ' 定义MDI子窗体 MDIChildFrm.MdiParent = MDIParentForm ' 定义MDI父窗体 MDIChildFrm.Show() '打开窗体 End Sub '*过程名称:PreventSameForm '*参数说明:MDIParentForm--父窗体;MDIChildForm——子窗体;MDIChildFormName ——子窗体的名字 '*功能说明:首先检测是否有MDI子窗体,如果没有,则创该MDI子窗体的窗体实例 '* 如果有,则检测当中有没有其窗体实例,有则激活;没有则创建其窗体实例 Public Shared Sub PreSameForm(ByVal MDIParentForm As Form, ByVal MDIChildForm As Form, ByVal MDIChildFormName As String) '如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例 If MDIParentForm.MdiChildren.Length < 1 Then '调用ShowMDIForm过程,显示子窗体 ShowMDIForm(MDIChildForm, MDIParentForm) Exit Sub Else Dim i As Integer '定义一个表示循环的整数型变量i '定义一个布尔型变量IsFrmSame,True表示重复,False表示不重复 Dim IsFrmSame As Boolean For i = 0 To (MDIParentForm.MdiChildren.Length) - 1 '遍历所有子窗体 'Child表示父窗体的某个子窗体 Dim Child As Form = CType(MDIParentForm.MdiChildren(i), Form) '若要打开的新窗体和已经打开的窗体命名相同,设为TRUE 并退出循环 If Child.Name = MDIChildFormName Then IsFrmSame = True Exit For Else IsFrmSame = False End If Next '若没有检测到命名相同,则在打开的窗体中检测则激活 If IsFrmSame = False Then ShowMDIForm(MDIChildForm, MDIParentForm) Else Dim MDIChildFrm As Form = CType(MDIParentForm.MdiChildren(i), Form) MDIChildFrm.Activate() End If End If End Sub End Class
我把它写在了一个类模块里,只需要UI层直接调用就可以了。
相关文章推荐
- 机房收费系统之条件查询窗体
- 机房收费系统--系统用户管理模块和主窗体的建立(二)
- 机房收费系统(五)有关子窗体的最小化功能
- 机房收费系统总结之关闭窗体
- 机房收费系统初体验——"歪打"无按钮标题栏,"正着"父窗体加载picturebox无遮挡显示子窗体
- 机房收费系统--系统用户管理模块和主窗体的创建(一)
- 机房收费系统-- 跨越窗体从数据库里取数据
- 机房收费系统之主窗体
- 机房收费系统-- MDI子窗体显示技巧(续vb.net版)
- 机房收费系统总结——窗体代码框架
- 机房收费系统--系统用户管理模块和主窗体建立(三)
- 机房收费系统-- MDI子窗体显示技巧
- 机房收费系统小叙——窗体和数据库的关系
- 机房收费系统之主窗体
- 机房收费系统之充值窗体
- 机房收费系统--系统用户管理模块和主窗体的建立(四)
- 机房收费系统-----如何解决子窗体被picturebox挡住的办法
- 机房收费系统--各个窗体功能实现的基本要点
- 充值窗体 机房收费系统
- 机房收费系统——添加删除用户窗体