注册 登录
编程论坛 VB.NET论坛

如何判断子窗体是否打开

chdltanke 发布于 2009-07-21 21:58, 3234 次点击
在父窗体内打开多个子窗体,为了避免同一个子窗体多次打开,需要判断该子窗体是否打开
7 回复
#2
sywzs2009-07-22 05:20
1、在父窗体的菜单中加入“窗口”菜单,其 MdiList 属性设为 True。这样,每打开一个子窗体,将在其下拉菜单中增加子窗体名。
2、判断子窗体是否存在,是则将其设置焦点,否则将其打开。
#3
chdltanke2009-07-22 09:44
如何判断子窗体已经存在呢?
#4
fairy42009-07-22 11:01
程序代码:
   For x = 0 To (Me.MdiChildren.Length) - 1
                tempChild = CType(Me.MdiChildren(x), Form)
                If tempChild.Name = MDIChildFormName Then
                    frmyn = True
                    '检测到有该MDI子窗体,设为TRUE 并退出循环
                    Exit For
                Else
                    frmyn = False
                End If
            Next
#5
乖老鼠2009-07-22 11:09
获得父窗体的子窗体列表,foreach循环子窗体,再比较子窗体的type是不是想比较的那个子窗体的type
C#里面是这样的
#6
sywzs2009-07-22 14:30
' 获得子窗体数量,判断是否有要打开的子窗体
    Private Function GetInstanceState(ByVal Name As String) As Boolean
        Dim i As Integer = Me.MdiChildren.Length
        For i = 0 To Me.MdiChildren.Length - 1     '循环判断是否有名为name的子窗体
            If Me.MdiChildren(i).Name = Name Then  '存在名为name的子窗体
                Me.MdiChildren(i).Focus()          '子窗体获得焦点并返回True
                Return True
            End If
        Next
        Return False                       '不存在名为Name的子窗体返回False
    End Function

    Private Sub .......    '调用子窗体的事件
        If GetInstanceState(子窗体名) Then
            Exit Sub
        End If
        Dim ChildFrm As Form
        ChildFrm = New 子窗体名
        ChildFrm.MdiParent = Me
        ChildFrm.Show()
    End Sub
#7
chdltanke2009-07-22 14:30
谢谢版主
#8
chdltanke2009-07-22 18:21
谢谢sywzs
1