アプリケーションで次の問題が発生しています。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)
これでもう少しドキュメントがカバーされることを願っています。
敬具、
クリストフ