Comment afficher un Windows Form en plein écran en haut de la barre des tâches?

J’ai une application Windows .net qui doit fonctionner en plein écran. Lorsque l’application démarre, la barre des tâches est affichée en haut du formulaire principal et disparaît uniquement lors de l’activation du formulaire en cliquant dessus ou en utilisant ALT-TAB. Les propriétés actuelles du formulaire sont les suivantes:

  • WindowState = FormWindowState.Normal
  • TopMost = Normal
  • Size = 1024,768 (il s’agit de la résolution d’écran des machines sur lesquelles il sera exécuté)
  • FormBorderStyle = Aucun

J’ai essayé d’append les éléments suivants sur le chargement de formulaire, mais aucun n’a fonctionné pour moi:

  • this.Focus (); (après avoir donné le focus à cette propriété, la propriété focus est toujours fausse)
  • this.BringToFront ();
  • this.TopMost = true; (cela ne serait cependant pas idéal dans mon scénario)
  • this.Bounds = Screen.PrimaryScreen.Bounds;
  • this.Bounds = Screen.PrimaryScreen.Bounds;

Y at-il un moyen de le faire dans .NET ou devrais-je invoquer des méthodes Windows natives et si oui, un extrait de code serait très apprécié.

Merci beaucoup

Utilisation:

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

Et puis votre formulaire est placé sur la barre des tâches.

J’ai essayé tellement de solutions, certaines fonctionnent sous Windows XP et toutes ne fonctionnaient PAS sous Windows 7. Après tout, j’écris une méthode simple pour le faire.

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

l’ordre de code est important et ne fonctionnera pas si vous changez la place de WindwosState et de FormBorderStyle.

L’un des avantages de cette méthode est de laisser le TOPMOST sur false qui permet à d’autres formulaires de passer dans la forme principale.

Cela a résolu mon problème.

C’est comme ça que je crée des formulaires en plein écran.

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

Ma solution simple, il s’est avéré appeler la méthode Activate() du formulaire, il n’est donc pas nécessaire d’utiliser TopMost (ce que je TopMost ).

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

Une solution testée et simple

J’ai cherché une réponse à cette question dans SO et sur d’autres sites, mais une réponse a été très complexe pour moi et certaines autres réponses ne fonctionnent tout simplement pas correctement.

Remarque: J’utilise Windows 8 et ma barre des tâches n’est pas en mode masquage automatique.

J’ai découvert que la définition de WindowState sur Normal avant d’effectuer toute modification arrête l’erreur avec la barre des tâches non couverte.

Le code

J’ai créé cette classe qui a deux méthodes: la première entre en “mode plein écran” et la seconde en “mode plein écran”. Il vous suffit donc de créer un object de cette classe et de passer le formulaire que vous souhaitez définir en plein écran en tant qu’argument à la méthode EnterFullScreenMode ou à la méthode 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; } } 

Exemple d’utilisation

  private void fullScreenToolSsortingpMenuItem_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; } } 

J’ai placé cette même réponse sur une autre question dont je ne suis pas sûr s’il s’agit d’un doublon ou non. (Lien vers l’autre question: Comment puis-je créer une application WinForms en plein écran )

Je crois que cela peut être fait en définissant simplement votre propriété FormBorderStyle sur None et le WindowState sur Maximized. Si vous utilisez Visual Studio, vous pouvez les trouver tous les deux dans l’EDI, il n’est donc pas nécessaire de le faire par programmation. Assurez-vous d’inclure un moyen de fermer / quitter le programme avant de le faire, car cela supprimera ce si utile X dans le coin supérieur droit.

MODIFIER:

Essayez ceci à la place. C’est un extrait que j’ai gardé longtemps. Je ne me souviens même plus de qui en rendre compte, mais ça marche.

 /* * A function to put a System.Windows.Forms.Form in fullscreen mode * Author: Danny Battison * Contact: [email protected] */ // a struct containing important information about the state to restore to struct clientRect { public Point location; public int width; public int height; }; // this should be in the scope your class clientRect restore; bool fullscreen = false; ///  /// Makes the form either fullscreen, or restores it to it's original size/location ///  void Fullscreen() { if (fullscreen == false) { this.restore.location = this.Location; this.restore.width = this.Width; this.restore.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.restore.location; this.Width = this.restore.width; this.Height = this.restore.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; } } 

Je n’ai pas d’explication sur son fonctionnement, mais ça marche, et être codeur de cow-boy, c’est tout ce dont j’ai besoin.

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

CE CODE FAIT VOTRE ECRAN COMPLET WINDOWS CELA SERA AUSSI COUVRIR L’ECRAN ENTIER