.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
[初学VB.NET]如何防止重复打开MDI子窗体

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

VB.NET中,在访问窗体之前,你必须进行窗体实例化,然后才能打开,如:
           Dim frm1 As New Form1
          ' frm1.MdiParent = Me ' 定义MDI子窗体
           frm.Show() '打开窗体

如果在项目中有多处代码访问同一窗体,都这样的话,则会创建出不同的实例。如重防止重复打开MDI子窗体的实例呢?下面的代码可以帮你完成:

Dim frm1As New Form1
CheckForm(frm1, "Form1")

'*****************************************************************************
'*过程名称:CheckForm
'*参数说明:MDIChildForm——需检测的窗体;MDIChildFormName ——检测窗体的名字
'*功能说明:首先检测是否有MDI子窗体,如果没有,则创该MDI子窗体的窗体实例
'*                    如果有,则检测当中有没有其窗体实例,有则激活;没有则创建其窗体实例
'*****************************************************************************
Private Sub CheckForm(ByVal MDIChildForm As Form, ByVal MDIChildFormName As String)
         If Me.MdiChildren.Length < 1 Then
              '如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例
            ShowForm(MDIChildForm )
            Exit Sub
        Else
             Dim x As Integer
             Dim frmyn As Boolean
             For x = 0 To (Me.MdiChildren.Length) - 1
                   Dim tempChild As Form = CType(Me.MdiChildren(x), Form)
                   If tempChild.Name = MDIChildFormName Then
                       frmyn = True
                      '检测到有该MDI子窗体,设为TRUE 并退出循环
                      Exit For
                   Else
                      frmyn = False
                   End If
            Next
           If frmyn = False Then
              '在打开的窗体中没检测到则新建
                ShowForm(tempForm)
            Else
               '在打开的窗体中检测到则激活
                Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)
                MDIChildFrm .Activate()
              End If
         End If
End Sub

'**************************************************
'*过程名称:ShowForm
'*参数说明:MDIChildForm ——需创建实例的窗体
'*功能说明:创建窗体实例
'**************************************************
Private Sub ShowForm(ByVal MDIChildForm As Form)
           Dim MDIChildFrm  As Form = MDIChildForm
           MDIChildFrm.MdiParent = Me ' 定义MDI子窗体
           MDIChildFrm.Show() '打开窗体
End Sub



相关文章

相关软件