74 votes

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

J'ai une application Windows .net qui doit fonctionner en plein écran. Cependant, lorsque l'application démarre, la barre des tâches s'affiche au-dessus du formulaire principal et ne disparaît que lorsque l'on active le 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 (c'est la résolution d'écran des machines sur lesquelles il sera exécuté)
  • FormBorderStyle = Aucun

J'ai essayé d'ajouter les éléments suivants au chargement du formulaire mais aucun n'a fonctionné pour moi :

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

Existe-t-il un moyen de le faire dans .NET ou dois-je invoquer les méthodes natives de Windows ? Si oui, un extrait de code serait très apprécié.

de nombreux remerciements

1 votes

Private void Form1_Activated(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized ; }

128voto

TcKs Points 13249

Utilisez :

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

Et puis votre formulaire est placé au-dessus de la barre des tâches.

1 votes

J'avais un jour de retard et un dollar de moins, je suppose.

0 votes

Envoyez la copie d'écran, comment ça se présente. C'est la méthode standard que j'ai utilisée avec succès pour cette tâche. Je pense qu'il y aura d'autres problèmes.

0 votes

Désolé mais je ne peux pas envoyer de captures d'écran pour des raisons de clientèle. Il s'agit essentiellement d'un formulaire sans bordure qui occupe toute la taille de l'écran mais qui, lorsqu'il démarre, est affiché derrière la barre des tâches, jusqu'à ce que vous cliquiez sur le formulaire, ce qui l'active et le fait apparaître au-dessus de la barre des tâches. Merci.

69voto

mammadalius Points 701

J'ai essayé tant de solutions, certaines fonctionnant sous Windows XP et toutes ne fonctionnant PAS sous Windows 7. Après tout, j'ai écrit 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 du code est important et ne fonctionnera pas si vous changez la place de WindwosState et FormBorderStyle.

L'un des avantages de cette méthode est de laisser le TOPMOST sur les faux qui permettent à d'autres formulaires de venir sur le formulaire principal.

Cela a absolument résolu mon problème.

1 votes

Cette solution a fonctionné pour moi sous Windows 8 alors qu'aucune autre ne l'a fait.

4 votes

Cela fonctionne très bien, cela devrait être la réponse acceptée.

1 votes

Cela a fonctionné pour moi brillamment sous Windows 10

16voto

C'est ainsi que je fais 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;
}

15voto

myquestionoftheday Points 151

La solution simple que j'ai trouvée est d'appeler la fonction de formulaire Activate() il n'est donc pas nécessaire d'utiliser la méthode TopMost (c'est ce que je visais).

6voto

MEO Points 31
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
WindowState = FormWindowState.Maximized;

1 votes

Mammadalius a déjà fourni une solution similaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X