2009-03-02 32 views
10

Bên trong một biểu mẫu MDI là một khu vực khách hàng lưu trữ các biểu mẫu con mdi. Làm thế nào để tôi tìm ra khu vực rộng lớn như thế nào? Điều tốt nhất tôi có thể tìm ra cho đến nay là tìm tổng kích thước của khu vực khách hàng tiềm năng của cha mẹ (mdiparent.ClientRectangle) và sau đó trừ đi các kích thước của các thành phần như thanh công cụ, vv lấy đi khỏi vùng máy khách. Có cách nào tốt hơn?Kích thước/Vị trí của Winforms MDI Client Area

Trả lời

19

Không có thuộc tính nào trên biểu mẫu cung cấp cho bạn quyền truy cập vào cửa sổ ứng dụng khách MDI. Nhưng bạn có thể tìm thấy nó như sau:

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

Từ đó, chỉ cần sử dụng thuộc tính Kích thước của nó.

+1

Cảm ơn, mà làm việc tuyệt vời. Đối với một số lý do tôi đã phải trừ thêm 4 pixel (có thể cho một biên giới khung?), Nhưng tôi có thể sống với điều đó. – Jeff

+3

@Jeff Sử dụng MdiClient.ClientSize thay vì trừ 4 pixel –

1

Dưới đây là một biến thể của mã mà trong 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 
Các vấn đề liên quan