2009-03-02 22 views
10

MDI窗體內部是承載mdi子窗體的客戶端區域。我如何知道該區域有多大?到目前爲止我所能想到的最好的方法是找到父代的潛在客戶區域(mdiparent.ClientRectangle)的總大小,然後減去從客戶區域帶走的工具欄等組件的大小。有沒有更好的辦法?Winforms MDI客戶端區域的大小/位置

回答

19

表單上沒有屬性可以訪問MDI客戶端窗口。但是你可以這樣找回它:

public MdiClient GetMdiClientWindow() { 
    foreach (Control ctl in this.Controls) { 
    if (ctl is MdiClient) return ctl as MdiClient; 
    } 
    return null; 
} 

從那裏,只需使用它的Size屬性。

+1

謝謝,這工作真棒。出於某種原因,我不得不減去額外的4個像素(可能是一個框架邊框?),但我可以忍受。 – Jeff 2009-03-03 03:16:25

1

下面是代碼的在vb.net變體:

Public Function GetMdiClientWindowSize() As Size 
    For Each ctl As Control In Me.MdiParent.Controls 
     If TypeOf ctl Is MdiClient Then 
      Return ctl.Size 
     End If 
    Next 
    Return Nothing 
End Function 
相關問題