2012-04-04 64 views
2

看起來像一個愚蠢的問題,但我試過以下(其中,「我」是的MdiParent形式):如何在MDIParent的右下角放置MDIChild表單?

​​

,但它不工作。

想法?

+0

「不起作用」是一個可怕的診斷。這裏的典型問題是Aero在窗口周圍放置的脂肪邊界。對於appcompat的原因,你會得到錯誤的窗口大小。有沒有乾淨的解決方案,增加4的大小是Q&D修復。 – 2012-04-04 14:24:36

+0

「沒有工作」意味着它沒有按預期定位;-) – 2012-04-04 14:42:49

回答

2

假設你有一個「空」 MDI父窗體(無面板或ToolStrips對接),這應該工作:

Dim frmNotif As New frmNotifica 
With frmNotif 
    .MdiParent = Me 
    .StartPosition = FormStartPosition.Manual 

    Dim leftStart As Integer = Me.ClientSize.Width - (.Width + (SystemInformation.Border3DSize.Width * 2)) 
    Dim topStart As Integer = Me.ClientSize.Height - (.Height + (SystemInformation.Border3DSize.Height * 2)) 

    .Location = New Point(leftStart, topStart) 
    .Show() 
End With 

如果你有一個小組或ToolStrip中加入的MdiParent,你就必須因素也在你的等式中。

+2

有兩個問題:此代碼需要在窗體的Load事件處理程序中運行,因此任何自動重新縮放都已完成。而Border3DSize hack將無法在XP上運行,或者Aero被關閉。 – 2012-04-04 14:27:30

+0

非常感謝!這解決了我的實際問題。我很快會遇到的問題是:如果我想要在右下角顯示的特定形式是無邊界的,會發生什麼?看起來像SystemInformation.Border3DSize是所有系統的窗體邊框的標準大小......看起來我必須檢查我想在其中顯示的所有窗體類型:-) – 2012-04-04 14:29:28

+0

@AndreaAntonangeli請注意Hans Passant的註釋。此解決方案*可能*在任何情況下都不起作用。如果兒童表格的定位對應用程序至關重要,那麼MDI可能不是最好的方法。 – LarsTech 2012-04-04 14:33:26

相關問題