Estoy usando Windows Vista y C#.net 3.5, pero yo tenía mi amigo ejecutar el programa en windows XP y tiene el mismo problema.

Así que tengo un programa de C# que me ejecutando en segundo plano con un icono en el SystemTray. Tengo un bajo nivel de enlace de teclado, así que cuando me presionan dos teclas (Ctr+windows en este caso) va a tirar del formulario principal de la aplicación. El formulario se establece en pantalla completa en el combo de pulsar la tecla incluso controlador:

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

Así que básicamente funciona. Cuando llegué a la CTR+Windows que trae el formulario, no importa qué programa me ha dado atención a la. Pero a veces, la barra de tareas mostrará sobre el formulario, que no quiero. Yo quiero estar siempre a pantalla completa cuando me golpeó esa combinación de teclas.

Me imagino que tiene algo que ver con qué aplicación tiene el foco originalmente. Pero incluso cuando hago clic en mi formulario principal, la barra de tareas, a veces se queda allí. Así que me pregunto si el foco es realmente el problema. Parece que a veces la barra de tareas es ser terco y no quiere sentarse detrás de mi programa.

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

EDIT: Más detalles-
Estoy tratando de lograr el mismo efecto que un navegador web a la hora de ponerlo en modo de pantalla completa, o cuando se ponga de powerpoint en modo de presentación.

En un formulario windows forms usted hacer que al poner el estilo de borde a ninguno, y maximizar la ventana. Pero a veces, la ventana no cubierta de la barra de tareas, por alguna razón. La mitad del tiempo.

Si tengo la ventana principal de nivel superior, los demás se quedan atrás cuando hago clic en él, lo que no quiero si la barra de tareas está oculto.

InformationsquelleAutor Joel | 2008-09-22

5 Comentarios

  1. 18

    Probar este (donde this es su forma):

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

    Que va a establecer el formulario a pantalla completa, y se va a la cubierta de la barra de tareas.

    • Para que esto funcione, usted quiere asegurarse de que el formulario es no maximizada.
    • Oh, el único problema es que no puede ser Superior, porque tengo otro windows que son más de lo que son de nivel Superior, y entonces, si hago clic en ‘este’, todas las otras ventanas se vaya detrás de ella.
    • Heh. Menores detalles. Tengo mis dudas sobre si lo que quieres se puede hacer sin Superior si el usuario tiene «Mantener la barra de tareas en la parte superior de otras ventanas» marcada. Pero también puede tener varias Superior de windows, y el activo, será el, uh, TopMostest.
  2. 2

    He intentado muchas soluciones, algunas de ellas funciona en Windows XP y todos ellos NO funcionan en Windows 7. Después de todo lo que escriba un método sencillo 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 de código es importante y no funcionará si se cambia el lugar de WindwosState y FormBorderStyle.

    Una de las ventajas de este método es la de dejar el SUPERIOR en falso que permiten otras formas de llegar a la forma principal.

    Absolutamente resuelto mi problema.

  3. 1
    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();
            }
    }
  4. 0

    Hasta donde yo sé, la barra de tareas, ya sea por encima o por debajo de windows basado en el «Mantener la barra de tareas en la parte superior de otras ventanas» de configuración. (Al menos, esa es la redacción en XP). Supongo que se podría probar a ver si puede detectar esta configuración y cambie si es necesario?

    • Es una mala práctica para cambiar elegido por el usuario ajustes en función de SUS preferencias. Es mejor averiguar cómo utilizar la Api para obtener el comportamiento que usted desea en el camino correcto.
    • Que configuración sólo se aplica a la ventana de aplicaciones, no apps a pantalla completa. Porque cuando juego a juegos o poner mi navegador web a pantalla completa que va a cubrir la barra de tareas.
    • Apps a pantalla completa, al igual que los juegos están cambiando el modo de visualización para DirectX o OpenGL o algo completamente fuera del sistema de ventanas, que da el programa de raw de búfer de vídeo de acceso. Este es desde dentro del sistema de ventanas, de modo que el ajuste que he mencionado se aplica.
  5. 0

    Intente cambiar el tamaño del formulario y llevarlo a la parte delantera de la orden-z como:

            Rectangle screenRect = Screen.GetBounds(this);
            this.Location = screenRect.Location;
            this.Size = screenRect.Size;
            this.BringToFront();

Dejar respuesta

Please enter your comment!
Please enter your name here