¿Cómo mostrar un formulario de Windows en pantalla completa en la parte superior de la barra de tareas?

Tengo una aplicación de Windows .net que necesita ejecutarse en pantalla completa. Sin embargo, cuando se inicia la aplicación, la barra de tareas se muestra en la parte superior del formulario principal y solo desaparece cuando se activa el formulario haciendo clic en él o usando ALT-TAB. Las propiedades actuales del formulario son las siguientes:

  • WindowState = FormWindowState.Normal
  • TopMost = Normal
  • Tamaño = 1024.768 (esta es la resolución de pantalla de las máquinas en las que se ejecutará)
  • FormBorderStyle = None

Intenté agregar lo siguiente en la carga del formulario pero ninguno funcionó para mí:

  • esto.Enfoque (); (después de dar el foco esto. La propiedad de foco siempre es falsa)
  • this.BringToFront ();
  • this.TopMost = verdadero; (Sin embargo, esto no sería ideal en mi caso)
  • this.Bounds = Screen.PrimaryScreen.Bounds;
  • this.Bounds = Screen.PrimaryScreen.Bounds;

¿Hay alguna forma de hacerlo dentro de .NET o tendría que invocar métodos nativos de Windows y, de ser así, sería muy útil un fragmento de código?

muchas gracias

Utilizar:

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

Y luego su formulario se coloca sobre la barra de tareas.

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.

Así es como hago formularios en pantalla completa.

 private void button1_Click(object sender, EventArgs e) { int minx, miny, maxx, maxy; inx = miny = int.MaxValue; maxx = maxy = int.MinValue; foreach (Screen screen in Screen.AllScreens) { var bounds = screen.Bounds; minx = Math.Min(minx, bounds.X); miny = Math.Min(miny, bounds.Y); maxx = Math.Max(maxx, bounds.Right); maxy = Math.Max(maxy, bounds.Bottom); } Form3 fs = new Form3(); fs.Activate(); Rectangle tempRect = new Rectangle(1, 0, maxx, maxy); this.DesktopBounds = tempRect; } 

Mi solución simple fue llamar al método Activate() del formulario, por lo que no es necesario usar TopMost (que es lo que pretendía).

 FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; WindowState = FormWindowState.Maximized; 

Una solución probada y simple

He estado buscando una respuesta para esta pregunta en SO y en algunos otros sitios, pero uno me dio una respuesta que fue muy compleja y otras respuestas simplemente no funcionan correctamente, así que después de muchas pruebas de código resolví este rompecabezas.

Nota: estoy usando Windows 8 y mi barra de tareas no está en modo de ocultación automática.

Descubrí que establecer WindowState en Normal antes de realizar cualquier modificación detendrá el error con la barra de tareas no cubierta.

El código

Creé esta clase que tiene dos métodos, la primera entra en el “modo de pantalla completa” y la segunda deja el “modo de pantalla completa”. Así que solo necesita crear un objeto de esta clase y pasar el Formulario que desea establecer a pantalla completa como argumento para el método EnterFullScreenMode o para el método LeaveFullScreenMode:

 class FullScreen { public void EnterFullScreenMode(Form targetForm) { targetForm.WindowState = FormWindowState.Normal; targetForm.FormBorderStyle = FormBorderStyle.None; targetForm.WindowState = FormWindowState.Maximized; } public void LeaveFullScreenMode(Form targetForm) { targetForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; targetForm.WindowState = FormWindowState.Normal; } } 

Ejemplo de uso

  private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e) { FullScreen fullScreen = new FullScreen(); if (fullScreenMode == FullScreenMode.No) // FullScreenMode is an enum { fullScreen.EnterFullScreenMode(this); fullScreenMode = FullScreenMode.Yes; } else { fullScreen.LeaveFullScreenMode(this); fullScreenMode = FullScreenMode.No; } } 

He colocado esta misma respuesta en otra pregunta que no estoy seguro si es un duplicado o no de este. (Enlace a la otra pregunta: ¿Cómo hago para que una aplicación de WinForms pase a Pantalla completa )

Creo que se puede hacer simplemente configurando la propiedad FormBorderStyle en None y WindowState en Maximized. Si está utilizando Visual Studio, ambos pueden encontrarse en el IDE, por lo que no es necesario hacerlo programáticamente. Asegúrese de incluir alguna forma de cerrar / salir del progtwig antes de hacer esto porque esto eliminará esa oh tan útil X en la esquina superior derecha.

EDITAR:

Prueba esto en su lugar. Es un fragmento que he guardado durante mucho tiempo. Ni siquiera puedo recordar a quién dar crédito, pero funciona.

 /* * A function to put a System.Windows.Forms.Form in fullscreen mode * Author: Danny Battison * Contact: gabehabe@googlemail.com */ // a struct containing important information about the state to restre to struct clientRect { public Point location; public int width; public int height; }; // this should be in the scope your class clientRect restre; bool fullscreen = false; ///  /// Makes the form either fullscreen, or restres it to it's original size/location ///  void Fullscreen() { if (fullscreen == false) { this.restre.location = this.Location; this.restre.width = this.Width; this.restre.height = this.Height; this.TopMost = true; this.Location = new Point(0,0); this.FormBorderStyle = FormBorderStyle.None; this.Width = Screen.PrimaryScreen.Bounds.Width; this.Height = Screen.PrimaryScreen.Bounds.Height; } else { this.TopMost = false; this.Location = this.restre.location; this.Width = this.restre.width; this.Height = this.restre.height; // these are the two variables you may wish to change, depending // on the design of your form (WindowState and FormBorderStyle) this.WindowState = FormWindowState.Normal; this.FormBorderStyle = FormBorderStyle.Sizable; } } 

No tengo una explicación sobre cómo funciona, pero funciona, y ser codificador de vaqueros es todo lo que necesito.

  System.Drawing.Rectangle rect = Screen.GetWorkingArea(this); this.MaximizedBounds = Screen.GetWorkingArea(this); this.WindowState = FormWindowState.Maximized; 
 FormBorderStyle = FormBorderStyle.Sizable; TopMost = false; WindowState = FormWindowState.Normal; 

ESTE CÓDIGO HAGA QUE SU PANTALLA COMPLETA DE WINDOWS ESTO TAMBIÉN CUBRA LA PANTALLA ENTERA