首页 > 解决方案 > 防止子表单切换回上次打开的表单

问题描述

我有一个 MDI 表单,它打开一个用户无法关闭的停靠子表单(用户仪表板)。然后,MDI 可以打开 MDI 内的停靠子窗体或非停靠子窗体。

我遇到的问题是,如果用户打开一个客户信息停靠表单并在该表单上点击保存,则保存后它会自动切换到仪表板表单。

在加载和加载仪表板时

'Display Main Dashboard in MDI
            Dim fc As FormCollection = Application.OpenForms
            Dim FormFound As Boolean = False
            For Each frm As Form In fc
                If frm.Name = "frmDashboard" Then
                    frm.Focus()
                    FormFound = True
                End If
            Next

            If FormFound = False Then
                Dim frm As New frmDashboard
                With frm
                    .MdiParent = Me
                    '.Dock = DockStyle.Fill
                    .FormBorderStyle = FormBorderStyle.Fixed3D
                    .WindowState = FormWindowState.Maximized
                    .Show()
                    _log.Info("Opening the dashboard form")
                End With
            End If

如果用户调用客户表单

Private Sub tsbCustVend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbCustVend.Click
        Try
            tvNavigation.Enabled = False
            Me.Cursor = Cursors.WaitCursor

            Dim fc As FormCollection = Application.OpenForms
            Dim FormFound As Boolean = False
            For Each frm As Form In fc
                If frm.Name = "frmCustomer" Then
                    frm.Focus()
                    FormFound = True
                End If
            Next

            If FormFound = False Then
                Dim CustForm As New frmCustomer
                _log.Info("Opening form " & CustForm.Name)
                With CustForm
                    .MdiParent = Me
                    '.Dock = DockStyle.Fill
                    .FormBorderStyle = FormBorderStyle.Sizable
                    .WindowState = FormWindowState.Maximized
                End With
                CustForm.Show()
            End If

        Catch ex As Exception
            _log.Error(ex.ToString & vbCrLf & ex.StackTrace.ToString)
            MessageBox.Show(ex.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            Me.Invalidate()
            tvNavigation.Enabled = True
            Me.Cursor = Cursors.Default

        End Try

    End Sub

在用户保存新的或现有的客户后,后台仪表板表单被带到前面并集中。

感谢任何帮助谢谢

标签: winformsmdimdichildmdiparent

解决方案


推荐阅读