2009-03-02 14 views
10

Dentro de un formulario MDI se encuentra un área de cliente que aloja los formularios mdi child. ¿Cómo averiguo qué tan grande es esa área? Lo mejor que puedo llegar hasta ahora es encontrar el tamaño total del área de cliente potencial de los padres (mdiparent.ClientRectangle) y luego restar los tamaños de componentes como barras de herramientas, etc. que se llevan del área del cliente. ¿Hay una mejor manera?Tamaño/ubicación de Winforms Área de cliente MDI

Respuesta

19

No hay ninguna propiedad en un formulario que le dé acceso a la ventana del cliente MDI. Pero puede encontrarlo de nuevo así:

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

Desde allí, simplemente use su propiedad Size.

+1

Gracias, que funcionó impresionante. Por alguna razón tuve que restar 4 píxeles adicionales (¿probablemente por un borde de marco?), Pero puedo vivir con eso. – Jeff

+3

@Jeff Use MdiClient.ClientSize en lugar de restar 4 píxeles –

1

Aquí es una variante de ese código en 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 
Cuestiones relacionadas