Si vous devez faire des fenêtres MDI vous allez peut être avoir besoin de connaître la taille de la zone cliente MDI (celle qui contient les fenêtre MDI filles).

On peut également avoir envie d' accéder à cette zone pour y dessiner un logo ou même des contrôles.

Une form MDI mère (avec la propriété IsMdiContainer à true donc) ne donne pas directement accès à cette zone. Pourtant il existe une méthode simple pour le faire.

En effet, afin de gérer correctement les contrôles dockés et les menus, WIndows Forms crée un contrôle MdiClient qu' il intègre dans la liste des contrôles du formulaire.

Ainsi il suffit de récupérer ce contrôle pour maîtriser la zone cliente MDI:

/// <summary>
/// Retourne la taille de la zone client MDI.
/// </summary>
public Size MDIClientSize
{
    get
    {
        foreach (System.Windows.Forms.Control c in Controls)
        {
            if (c is MdiClient)
                return c.ClientSize;
        }

        return Size.Empty;
    }
}

On retourne ici la taille de la zone cliente mais il est possible de directement récupérer le contrôle.

Et juste pour le plaisir la même version en utilisant les services de LINQ:

public MdiClient MDIClientSize
{
    get
    {
        return Controls.OfType<MdiClient>().First();
    }
}