Sprawdzone i proste rozwiązanie
Szukałem odpowiedzi na to pytanie w SO i kilku innych witrynach, ale jedna dała odpowiedź była dla mnie bardzo złożona, a inne odpowiedzi po prostu nie działają poprawnie, więc po wielu testach kodu rozwiązałem tę zagadkę.
Uwaga: używam systemu Windows 8 i mój pasek zadań nie jest w trybie automatycznego ukrywania.
Odkryłem, że ustawienie WindowState na Normal przed wykonaniem jakichkolwiek modyfikacji zatrzyma błąd z nie pokrytym paskiem zadań.
Kod
Stworzyłem tę klasę, która ma dwie metody, pierwsza wchodzi w „tryb pełnego ekranu”, a druga wychodzi z „trybu pełnego ekranu”. Wystarczy więc utworzyć obiekt tej klasy i przekazać Formularz, który chcesz ustawić na pełny ekran jako argument do metody EnterFullScreenMode lub do metody 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;
}
}
Przykład użycia
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;
}
}
Umieściłem tę samą odpowiedź na innym pytaniu, co do którego nie jestem pewien, czy jest to duplikat, czy nie. (Link do drugiego pytania: Jak wyświetlić formularz systemu Windows na pełnym ekranie u góry paska zadań? )