c# - porque - como ocultar la barra de tareas en pantalla completa
C#- ¿Por qué una aplicación winform de pantalla completa SIEMPRE no cubre la barra de tareas? (5)
He intentado con tantas soluciones, algunas de ellas funcionan en Windows XP y todas ellas NO funcionaron en Windows 7. Después de todo, escribí un método simple para hacerlo.
private void GoFullscreen(bool fullscreen)
{
if (fullscreen)
{
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Bounds = Screen.PrimaryScreen.Bounds;
}
else
{
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
}
}
el orden del código es importante y no funcionará si cambia el lugar de WindwosState y FormBorderStyle.
Una de las ventajas de este método es dejar el TOPMOST en falso que permite que otros formularios aparezcan en el formulario principal.
Resolvió absolutamente mi problema.
Estoy usando Windows Vista y C # .net 3.5, pero hice que mi amigo ejecutara el programa en XP y tiene el mismo problema.
Así que tengo un programa C # que tengo corriendo en segundo plano con un ícono en SystemTray. Tengo un gancho de teclado de bajo nivel, así que cuando presiono dos teclas (Ctrl + Windows en este caso) extraeré el formulario principal de la aplicación. El formulario está configurado para ser pantalla completa en la tecla combo presionar controlador par:
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
Entonces básicamente funciona. Cuando presiono CTR + Windows, aparece el formulario, sin importar a qué programa me he enfocado. Pero a veces, la barra de tareas seguirá apareciendo en el formulario, que no quiero. Quiero que siempre sea pantalla completa cuando presiono esa combinación de teclas.
Me imagino que tiene algo que ver con qué aplicación tiene foco originalmente. Pero incluso cuando hago clic en mi formulario principal, la barra de tareas a veces se queda allí. Entonces me pregunto si el enfoque realmente es el problema. Parece que a veces la barra de tareas es obstinada y no quiere sentarse detrás de mi programa.
¿Alguien tiene alguna idea de cómo puedo solucionar esto?
EDITAR: Más detalles: estoy tratando de lograr el mismo efecto que tiene un navegador web cuando lo pones en modo de pantalla completa, o cuando pones powerpoint en el modo de presentación.
En un formulario de Windows lo hace poniendo el estilo de borde en ninguno y maximizando la ventana. Pero a veces la ventana no cubrirá la barra de tareas por alguna razón. La mitad del tiempo lo hará.
Si tengo la ventana principal en la parte superior, los demás se quedarán atrás cuando haga clic en ella, lo que no quiero si la barra de tareas está oculta.
Intente cambiar el tamaño del formulario y llevarlo al principio del orden z como se muestra a continuación:
Rectangle screenRect = Screen.GetBounds(this);
this.Location = screenRect.Location;
this.Size = screenRect.Size;
this.BringToFront();
Por lo que yo sé, la barra de tareas está arriba o abajo de las ventanas según la configuración "Mantener la barra de tareas encima de otras ventanas". (Al menos, esa es la redacción en XP.) Supongo que podrías tratar de ver si puedes detectar esta configuración y alternarla si es necesario.
Pruebe esto (donde this
es su forma):
this.Bounds = Screen.PrimaryScreen.Bounds;
this.TopMost = true;
Eso configurará el formulario en pantalla completa y cubrirá la barra de tareas.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F11)
if (FormBorderStyle == FormBorderStyle.None)
{
FormBorderStyle = FormBorderStyle.Sizable;
WindowState = FormWindowState.Normal;
}
else
{
SuspendLayout();
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
ResumeLayout();
}
}