2017-08-03 188 views
0

我有一個MDI子窗體(frmReview),我的目標是展示用下面的代碼我的最大化父窗體上:MDI子窗體不顯示

Public Sub frmTransport_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown 
    'keyboard shortcuts 
    If e.KeyCode = Keys.F1 Then LaunchManual() 
    If e.Control Then 
     If e.KeyValue = Keys.R Then 
      Me.WindowState = FormWindowState.Maximized 
      Dim review As New frmReview 
      review.MdiParent = Me 
      review.Location = New Point(1175, 0) 
      review.BringToFront() 
      review.Show() 
     End If 
     ... 
     ... 
     End Sub 

enter image description here

點(1175,0 )是TabControl遇見黃色mdi容器的右上角。父窗體將其isMdiContainer屬性設置爲True,並且當我運行此代碼時,frmReview的Load事件會觸發,但我沒有看到子窗體:

在另一個程序中,我使用相同的過程來顯示MDI兒童表格,它工作正常。有關爲何發生這種情況的任何建議?

在此先感謝!

+0

你知道'Location'相當於控制的左上角,並且要設置,要右上方父母的角落?嘗試(588,0),它應該在中間。你只需要做適當的位置的數學 – djv

+0

我的錯誤 - 將其設置爲(588,0),仍然不工作 –

回答

1

如果你想顯示在右上角的形式,用這個

Dim mdiClient = Me.Controls.OfType(Of MdiClient).FirstOrDefault() 
Me.WindowState = FormWindowState.Maximized 
Dim review As New frmReview 
review.MdiParent = Me 
review.BringToFront() 
review.Show() 
' order of Show() call changed so review has a size 
review.Location = New Point(mdiClient.Size.Width - review.Width, 0) 
+0

我沒有明確地試圖在右上角顯示窗體,但此代碼顯示我的形成。謝謝。你能解釋爲什麼我的代碼不工作? –

+0

那麼Show()的順序有一定的影響。調用Show之後,它將具有初始大小和位置。之前不會。這就是爲什麼我需要這個訂單,爲我的數學涉及其寬度...不知道爲什麼你的表單不按原來的順序調用時顯示。可能MDI表格上的任何內容仍然以某種方式排在最前面。 – djv

+1

我在原始代碼中所做的只是在位置=之前移動Show()。謝謝! –

相關問題