Une solution simple et éprouvée
J'ai cherché une réponse à cette question sur SO et d'autres sites, mais l'un d'eux a donné une réponse très complexe pour moi et d'autres réponses ne fonctionnent 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-masqué.
J'ai découvert que le fait de régler WindowState sur Normal avant d'effectuer toute modification met fin à 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". Il suffit donc de créer un objet de cette classe et de passer le formulaire que vous voulez mettre en plein écran comme 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 dont je ne suis pas sûr qu'elle soit un doublon ou non de celle-ci. (Lien vers l'autre question : Comment afficher un formulaire Windows en plein écran au dessus de la barre des tâches ? )