Pregunta

Estoy usando Windows Vista y C#.net 3.5, pero le pedí a mi amigo que ejecutara el programa en XP y tiene el mismo problema.

Entonces tengo un programa C# que ejecuto en segundo plano con un ícono en SystemTray.Tengo un gancho de teclado de bajo nivel, por lo que cuando presiono dos teclas (Ctr+ventanas en este caso), se abrirá el formulario principal de la aplicación.El formulario está configurado para ser de pantalla completa en el controlador combinado de presionar la tecla uniforme:

this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;

Entonces básicamente funciona.Cuando presiono CTR+Windows, aparece el formulario, sin importar en qué programa me haya centrado.Pero a veces, la barra de tareas seguirá apareciendo sobre el formulario, lo cual no quiero.Quiero que siempre esté en pantalla completa cuando presiono esa combinación de teclas.

Me imagino que tiene algo que ver con la aplicación en la que se centró originalmente.Pero incluso cuando hago clic en mi formulario principal, la barra de tareas a veces permanece allí.Entonces me pregunto si la concentración es realmente el problema.Simplemente parece que a veces la barra de tareas se muestra obstinada y no quiere quedarse detrás de mi programa.

¿Alguien tiene alguna idea de cómo puedo solucionar este problema?

EDITAR:Más detalles: estoy tratando de lograr el mismo efecto que tiene un navegador web cuando lo coloca en modo de pantalla completa, o cuando pones PowerPoint en modo de presentación.

En un formulario de Windows, esto se hace poniendo el estilo del borde en ninguno y maximizando la ventana.Pero a veces la ventana no cubre la barra de tareas por algún motivo.La mitad de las veces lo será.

Si tengo la ventana principal en la parte superior, las demás quedarán detrás cuando haga clic en ella, lo cual no quiero si la barra de tareas está oculta.

¿Fue útil?

Solución

Prueba esto (donde this es tu forma):

this.Bounds = Screen.PrimaryScreen.Bounds;
this.TopMost = true;

Eso configurará el formulario en pantalla completa y cubrirá la barra de tareas.

Otros consejos

He probado muchas soluciones, algunas funcionan en Windows XP y todas NO funcionaron en Windows 7.Después de todo, escribo 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 TOPMOST en falso, lo que permite que otros formularios pasen al formulario principal.

Resolvió absolutamente mi problema.

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();
        }
}

Hasta donde yo sé, la barra de tareas está encima o debajo 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 intentar ver si puedes detectar esta configuración y alternarla si es necesario.

Intente cambiar el tamaño del formulario y llevarlo al frente del orden z así:

        Rectangle screenRect = Screen.GetBounds(this);
        this.Location = screenRect.Location;
        this.Size = screenRect.Size;
        this.BringToFront();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top