Antecedentes:
Hace un rato he puntualizado una respuesta en mis foros, en el que la
persona que preguntaba comentaba que asignaba el valor None a
la propiedad FormBordeStyle con idea de que su formulario (o
forma) no tuviese ningún tipo de borde ni botones de maximizar, minimizar ni
cerrar, pero que quería que el formulario estuviese maximizado para que
ocupara toda la pantalla, para ello le asigno el valor Maximized
a la propiedad WindowState del formulario.
El problema es que al iniciar la aplicación (o lo que es lo mismo, cuando la
aplicación estaba en funcionamiento), le ocupaba toda la pantalla, pero
también ocultaba la barra de Windows, y esa barra quería que se pudiera ver y
acceder.
La solución:
La forma de solucionar ese "pequeño" inconveniente es NO asignar el valor
Maximized a la propiedad WindowState, si
no el valor Normal (el que tiene de forma predeterminada),
pero si se hace eso, la ventana tendría el tamaño que se le haya dado en
tiempo de diseño, por tanto, lo que hay que hacer es averiguar el tamaño de
la ventana pero de Windows (¿como traducirían esto los
anglófonos?), es
decir, hay que saber qué tamaño tiene el "área de trabajo" (así se llama a
la parte visible y en la que las aplicaciones pueden mostrarse en el
escritorio de Windows).
Pero no solo hay que averiguar que tamaño tiene el área de trabajo, ya
que también es necesario saber cuales son las coordenadas de la esquina
superior izquierda, ya que el área "libre" del escritorio de Windows varia
según donde esté situada la barra de Windows, y esta la podemos tener en
cualquiera de los cuatro bordes de la pantalla.
Por tanto, necesitamos saber la posición y el tamaño que debemos darle a
nuestro formulario principal.
Ese tamaño y posición lo obtenemos de la propiedad WorkingArea
de la propiedad PrimaryScreen de la clase Screen
que esta definida en el espacio de nombres System.Windows.Forms.
El tamaño lo obtenemos mediante la propiedad Size, y la
posición superior izquierda la obtenemos de la propiedad Location,
sabiendo esto, lo que debemos escribir en el evento Form_Load
es el siguiente código:
Para Visual Basic:
Me.Location = Screen.PrimaryScreen.WorkingArea.Location
Me.Size = Screen.PrimaryScreen.WorkingArea.Size
Para C#:
this.Location = Screen.PrimaryScreen.WorkingArea.Location;
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
Espero que te sea de utilidad.
Nos vemos.
Guillermo
Espacios de nombres usados en el código de este artículo:
System.Windows.Forms