|
|
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...