índice de Visual Studio 2005 y .NET Framework 2.0 Form.RestoreBounds

El tamaño y posición con el que se restaurará el formulario

 
Publicado: 23/Ene/2006
Actualizado: 27/Ene/2006
Autor: Guillermo 'guille' Som


Introducción

La propiedad RestoreBounds de los formularios nos permite saber el tamaño que tendrá el formulario cuando le demos a restaurar la ventana, es decir cuando la pongamos en modo normal si es que está minimizada o maximizada.
¿Cual es la utilidad de esta nueva propiedad de los formularios de .NET 2.0?
Buena pregunta, ya que seguramente dirás que para que necesito saber el tamaño del formulario cuando está en modo normal si al indicarle a la propiedad WindowState que tenga un valor Normal, se restaurará, y por tanto no nos hace falta saber el tamaño... ya que será el propio .NET el que se encargue de averiguarlo.
Creo que la ventaja de la existencia de esta propiedad la podemos obtener si queremos mantener el tamaño y posición del formulario en un fichero de configuración. Normalmente cuando cerramos el formulario es cuando solemos averiguar el tamaño y posición que tenía, para así guardarlo y después cuando vuelva a iniciarse, poder restaurarlo. Pero si el formulario está minimizado o maximizado, tanto la posición como el tamaño del formulario no son los que nos gustaría guardar, y en lugar de ir guardando el tamaño y posición cada vez que se cambia de posición o tamaño, ahora lo tenemos más fácil, ya que si a la hora de cerrar el formulario éste está en modo minimizado o maximizado, podemos averiguar la posición y tamaño normal mediante esta propiedad RestoreBounds. Es más, tal como dice la documentación, esta propiedad solo está disponible si la propiedad WindowState del formulario no tiene un valor Normal.

 

Código de ejemplo en VB y C#

Veamos con un poco de código (tanto para Visual Basic 2005 como para C# 2005) cómo podríamos usar esta propiedad.

En este código simplemente se almacena el valor en una variable de tipo Rectangle, pero en un caso real lo guardaríamos en un fichero de configuración.

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
                Handles MyBase.FormClosing
    Select Case Me.WindowState
        Case FormWindowState.Normal
            ' Si está en modo normal, guardar el valor de Bounds
            Dim rect As Rectangle = Me.Bounds
        Case Else
            ' En otro caso, guardar el valor de RestoreBounds
            Dim rect As Rectangle = Me.RestoreBounds
    End Select
End Sub

 

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    switch(this.WindowState)
    {
        case FormWindowState.Normal:
            // Si está en modo normal, guardar el valor de Bounds
            Rectangle rect = this.Bounds;
            break;
        default:
            // En otro caso, guardar el valor de RestoreBounds
            Rectangle rect = this.RestoreBounds;
            break;
    }
}

 

Y esto es todo...

 


Trucos .NET 2.0

la Luna del Guille o... el Guille que está en la Luna... tanto monta...