Comment afficher un formulaire Windows en plein écran sur la barre des tâches? [dupliquer]

cette question a déjà une réponse ici:

j'ai une application .net windows qui doit fonctionner en plein écran. Lorsque la demande commence cependant la barre des tâches est affichée au-dessus du formulaire principal et il disparaît 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 (c'est la résolution d'écran des machines sur lesquelles il va tourner)
  • FormBorderStyle = None

j'ai essayé d'ajouter les suivants sur la charge de formulaire mais aucun ne travaillait pour moi:

  • .Focus(); (après avoir mis l'accent, cette.Focus propriété est toujours faux)
  • this.BringToFront ();
  • this.Supérieur = true; (toutefois, cela ne serait pas idéal dans mon scénario)
  • this.Limites = Écran.PrimaryScreen.
  • this.Limites = Écran.PrimaryScreen.

Est-il un moyen de le faire à l'intérieur .NET ou devrais-je invoquer les méthodes windows natives et si oui, un extrait de code serait très apprécié.

merci beaucoup

56
demandé sur T30 2010-02-16 13:11:30

9 réponses

utiliser:

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

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

85
répondu TcKs 2018-04-30 01:14:10

j'ai essayé tellement de solutions, certaines fonctionnent sur Windows XP et toutes ne fonctionnent pas sur 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 FormBorderStyle.

L'un des avantages de cette méthode est de laisser l'extrémité supérieure sur false qui permet à d'autres formes de venir au-dessus de la forme principale.

It absolument résolu mon problème.

42
répondu mammadalius 2012-01-15 09:37:36

C'est comme ça que je fais les 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;
}
14
répondu Wayne LukeSkywalka Deatherage 2014-08-28 19:51:20

ma simple correction il s'est avéré que l'appel de la méthode de la forme Activate() , donc il n'y a pas besoin d'utiliser TopMost (ce qui est ce que je visais).

11
répondu myquestionoftheday 2014-12-14 18:34:48
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
5
répondu MEO 2014-02-15 03:20:02

A testé solution simple et

j'ai été à la recherche d'une réponse à cette question dans SO et certains autres sites, mais l'un a donné une réponse était très complexe pour moi et d'autres réponses ne fonctionne tout simplement pas correctement, donc après beaucoup de tests de code, j'ai résolu ce puzzle.

Note: j'utilise Windows 8 et ma barre des tâches n'est pas en mode Auto-hide.

j'ai découvert que le réglage du WindowState à la normale avant d'effectuer des modifications va arrêter 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 dans le" mode plein écran "et la seconde quitte le"mode plein écran". Donc vous avez juste besoin de créer un objet de cette classe et passer le formulaire que vous voulez mettre plein écran comme un 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 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;
        }
    }

j'ai placé cette même réponse sur une autre question Que Je ne suis pas sûr si est un duplicata ou non de celui-ci. (Lien vers l'autre question: Comment faire pour faire passer une application WinForms En Plein écran )

4
répondu Zignd 2017-05-23 11:54:30

je crois que cela peut être fait en mettant simplement votre propriété FormBorderStyle à None et le WindowState à Maximized. Si vous utilisez Visual Studio, les deux se trouvent dans L'IDE, donc il n'est pas nécessaire de le faire par programmation. Assurez-vous d'inclure une certaine façon de fermer/quitter le programme avant de faire cette cause cela va supprimer que oh si utile X dans le coin supérieur droit.

EDIT:

essayez ceci à la place. C'est un extrait de que j'ai gardé pendant un long moment. Je ne peux même pas se rappeler qui à crédit pour cela, mais il fonctionne.

/*
 * 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 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;

        /// <summary>
        /// Makes the form either fullscreen, or restores it to it's original size/location
        /// </summary>
        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;
            }
        }
2
répondu Adkins 2010-02-16 10:39:15

Je n'ai pas d'explication sur la façon dont ça marche, mais ça marche, et être cow-boy codeur, c'est tout ce dont j'ai besoin.

        System.Drawing.Rectangle rect = Screen.GetWorkingArea(this);
        this.MaximizedBounds = Screen.GetWorkingArea(this);
        this.WindowState = FormWindowState.Maximized;
0
répondu Antonio Lopez 2014-08-24 13:43:43
FormBorderStyle = FormBorderStyle.Sizable;
TopMost = false;
WindowState = FormWindowState.Normal;

CE CODE REND VOS FENÊTRES PLEIN ÉCRAN CELA COUVRIRA AUSSI L'ÉCRAN ENTIER

-3
répondu user3647677 2014-05-24 09:09:30