Comment faire pour que L'application WinForms passe en plein écran

j'ai une application WinForms que j'essaie de faire plein écran (un peu comme ce que VS fait en mode plein écran).

actuellement je mets FormBorderStyle à None et WindowState à Maximized ce qui me donne un peu plus d'espace, mais il ne couvre pas au-dessus de la barre des tâches si elle est visible.

Que dois-je faire pour utiliser l'espace ainsi?

pour les points bonus, y a-t-il quelque chose que je puisse faire pour MenuStrip pour abandonner cet espace aussi?

94
demandé sur Divins Mathew 2009-02-03 01:10:57

7 réponses

à la question de base, ce qui suit fera l'affaire (cacher la barre des tâches)

private void Form1_Load(object sender, EventArgs e)
{
    this.TopMost = true;
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
}

mais, fait intéressant, si vous changez ces deux dernières lignes, la barre des tâches reste visible. Je pense que la séquence de ces actions sera difficile à contrôler avec la fenêtre des propriétés.

133
répondu Henk Holterman 2015-09-04 18:01:56

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 afficher un formulaire Windows en plein écran sur la barre des tâches? )

18
répondu Zignd 2017-05-23 12:34:41

et pour l'industrie-question, essayer ensemble

MenuStrip1.Parent = Nothing

en mode plein écran, il doit se désactiver.

et à la sortie du mode plein écran, réinitialiser le menustrip1.parent à la forme à nouveau et le ménustrip sera à nouveau normal.

6
répondu Stefan 2013-02-24 07:01:13

vous pouvez utiliser le code suivant pour ajuster l'écran de votre système et la barre des tâches est visible.

    private void Form1_Load(object sender, EventArgs e)
    {   
        // hide max,min and close button at top right of Window
        this.FormBorderStyle = FormBorderStyle.None;
        // fill the screen
        this.Bounds = Screen.PrimaryScreen.Bounds;
    }

pas besoin d'utiliser:

    this.TopMost = true;

cette ligne interfère avec alt+tab pour passer à une autre application. ("La plus haute "signifie que la fenêtre reste au-dessus des autres fenêtres, à moins qu'elles ne soient aussi marquées"la plus haute".)

5
répondu Raghavendra Devraj 2017-08-11 08:44:27

j'ai récemment fait une application Mediaplayer et j'ai utilisé des API-calls pour m'assurer que la barre des tâches était cachée lorsque le programme exécutait fullscreen et puis restauré la barre des tâches lorsque le programme n'était pas en fullscreen ou n'avait pas de focus ou était sorti.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer

Sub HideTrayBar()
    Try


        Dim tWnd As Integer = 0
        Dim bWnd As Integer = 0
        tWnd = FindWindow("Shell_TrayWnd", vbNullString)
        bWnd = FindWindowEx(tWnd, bWnd, "BUTTON", vbNullString)
        ShowWindow(tWnd, 0)
        ShowWindow(bWnd, 0)
    Catch ex As Exception
        'Error hiding the taskbar, do what you want here..
    End Try
End Sub
Sub ShowTraybar()
    Try
        Dim tWnd As Integer = 0
        Dim bWnd As Integer = 0
        tWnd = FindWindow("Shell_TrayWnd", vbNullString)
        bWnd = FindWindowEx(tWnd, bWnd, "BUTTON", vbNullString)
        ShowWindow(bWnd, 1)
        ShowWindow(tWnd, 1)
    Catch ex As Exception
    'Error showing the taskbar, do what you want here..     
               End Try


End Sub
3
répondu Stefan 2009-02-02 23:19:56

vous devez mettre votre fenêtre pour être le plus haut.

2
répondu Tron 2009-02-02 22:12:25

Je ne sais pas si ça va marcher sur .NET 2.0, mais ça a marché sur moi sur .net 4.5.2. Voici le code:

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class Your_Form_Name : Form
{
    public Your_Form_Name()
    {
        InitializeComponent();
    }

    // CODE STARTS HERE

    private System.Drawing.Size oldsize = new System.Drawing.Size(300, 300);
    private System.Drawing.Point oldlocation = new System.Drawing.Point(0, 0);
    private System.Windows.Forms.FormWindowState oldstate = System.Windows.Forms.FormWindowState.Normal;
    private System.Windows.Forms.FormBorderStyle oldstyle = System.Windows.Forms.FormBorderStyle.Sizable;
    private bool fullscreen = false;
    /// <summary>
    /// Goes to fullscreen or the old state.
    /// </summary>
    private void UpgradeFullscreen()
    {
        if (!fullscreen)
        {
            oldsize = this.Size;
            oldstate = this.WindowState;
            oldstyle = this.FormBorderStyle;
            oldlocation = this.Location;
            this.WindowState = System.Windows.Forms.FormWindowState.Normal;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Bounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
            fullscreen = true;
        }
        else
        {
            this.Location = oldlocation;
            this.WindowState = oldstate;
            this.FormBorderStyle = oldstyle;
            this.Size = oldsize;
            fullscreen = false;
        }
    }

    // CODE ENDS HERE
}

Utilisation:

UpgradeFullscreen(); // Goes to fullscreen
UpgradeFullscreen(); // Goes back to normal state
// You don't need arguments.

avis: Vous devez le placer dans la classe de votre formulaire (exemple: partial class Form1 : Form { /* Code goes here */ } ) ou il ne fonctionnera pas parce que si vous ne le placez sur aucun formulaire, le code this créera une exception.

1
répondu pixelomer 2016-10-28 17:37:57