0

请帮助我.. 我有一个项目使用 mdi 应用程序。我的问题是,如何检查 mdi child 是否已经在运行..?请帮我..

4

2 回答 2

2

我使用以下技术,但它需要每个表单类型的特定 Sub(我使用的是 VB.NET)。但是我确信有一种方法可以简化它以使用一个子处理所有子表单

        Dim blExists As Boolean = False
        For Each f As Form In Me.MdiChildren
            If TypeOf (f) Is FormName Then
                f.Focus()
                blExists = True
                Exit For
            End If
        Next
        If Not blExists Then
            fAnalysis = New FormName
            fAnalysis.MdiParent = Me
            fAnalysis.Show()
        End If

以下子适用于所有形式。

Private Sub ShowNewForm(ByVal frmName As Form)
        Dim blExists As Boolean = False
        Dim f as Form
        For Each f In Me.MdiChildren
            If f.Name Is frmName.Name Then
                f.Focus()
                blExists = True
                Exit For
            End If
        Next
        If Not blExists Then
            f = DirectCast(New Form, frmName.Type)
            fAnalysis.MdiParent = Me
            f.Show()
        End If
End Sub
于 2010-12-02T14:15:23.900 回答
0

当您创建 MDI 窗口时,您使用了 WM_MDICREATE对吗?好吧,该消息返回一个窗口句柄,您应该将该句柄保存在某处,以便以后想要找到该窗口或检查它是否存在时可以参考它。

MDICREATESTRUCT mci;
// fill out mci...
HWND hwndChild = (HWND) SendMessage(hwndMDI, WM_MDICREATE, 0, (LPARAM)(ULONG_PTR)&mci); 

// save hwndChild so that I can use it later.
于 2010-03-03T02:42:01.257 回答