1

アプリケーションで次の問題が発生しています。mdi 子フォームを開くと、本来あるべき最大化ウィンドウ状態になりますが、通常の状態で表示されます。親からの背景は、右側と下部にまだ表示されています。

ただし、子フォームを通常の状態に変更して再度最大化すると、最大化された状態で表示されます。しかし、アプリケーションを閉じて再起動すると、フォームに問題が再び発生します。

誰でもこの問題を解決するのを手伝ってもらえますか?

これはウィンドウに関連する問題ですか? または、他の何か?

Private Sub tbrMngr_ToolClick(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinToolbars.ToolClickEventArgs) Handles tbrMngrCeres.ToolClick

    Try

        '--> Handle click '
        If Not e.Tool.SharedProps.Tag Is Nothing Then

            Select Case CType(e.Tool.SharedProps.Tag, String).ToUpper
                Case "M_MANAGEMENT" : HandleManagementClick(e.Tool.Key)
            End Select

        End If

    Catch ex As Exception
        MessageBox.Show(ex.Message)

これは、メニューバーのどのボタンがクリックされたかを選択した場合です。すべての問題は、HandleManagementClick 内でのみ起こります

 Private Sub HandleManagementClick(ByVal pstrKey As String)

    Try

        Dim lblnNonModal As Boolean = True

        If Not Me.ifrmActiveForm Is Nothing Then
            If Not ifrmActiveForm.Disposing Then
                ifrmActiveForm.WindowState = FormWindowState.Normal
                ifrmActiveForm.Dispose()
                ifrmActiveForm = Nothing
                iNotifiers = Nothing
            End If
        End If

        Me.Cursor = Cursors.AppStarting

        Select Case pstrKey.ToUpper
            Case "RES" : Me.ifrmActiveForm = New frmReservationWizard(Me.iclsApp, "RES")
            Case "RCAT" : Me.ifrmActiveForm = New frmFacilityCategory(Me.iclsApp, "RCAT")
            Case "RGRP" : Me.ifrmActiveForm = New frmFacilityGroup(Me.iclsApp, "RGRP")

        End Select

        If Not ifrmActiveForm Is Nothing Then
            If pstrKey.ToUpper.Equals("RES") Then
                'ifrmActiveForm.ShowInTaskbar = False
                ifrmActiveForm.ShowDialog()
                ' Me.ShowScreen(FormWindowState.Normal, False, lblnNonModal, FormStartPosition.CenterScreen)
                ifrmActiveForm.Dispose()
            Else
                Me.ShowScreen(FormWindowState.Maximized, False, lblnNonModal, FormStartPosition.CenterScreen)

            End If
        End If

    Catch ex As Exception
        MessageBox.Show(ex.Message)

ご覧のとおり、windowstate プロパティは showscreen サブで最大化に設定されています。

 Private Function ShowScreen(ByVal pWindowState As FormWindowState, _
                            ByVal pblnRegisterChild As Boolean, _
                            ByVal pblnIsMdiChild As Boolean, _
                            ByVal pStartPosition As FormStartPosition) As DialogResult

    Dim lDialResult As DialogResult = DialogResult.None
    Dim lblnOpeningScreen As Boolean

    Try

        If Not lblnOpeningScreen Then

            lblnOpeningScreen = True

            Me.iNotifiers = Nothing

            If pblnIsMdiChild Then

                If pblnRegisterChild Then RegisterChild(AddressOf ifrmActiveForm.ParentNotifier)

                ifrmActiveForm.WindowState = pWindowState
                ifrmActiveForm.MdiParent = Me
                ifrmActiveForm.Show()

            Else
                lDialResult = ifrmActiveForm.ShowDialog()
            End If

        End If

        Return lDialResult

    Catch ex As Exception
        MessageBox.Show(ex.Message)

これでもう少しドキュメントがカバーされることを願っています。

敬具、

クリストフ

4

0 に答える 0