Una solución probada y sencilla
He estado buscando una respuesta para esta pregunta en SO y en algunos otros sitios, pero uno dio una respuesta que era muy compleja para mí y otras respuestas simplemente no funcionan correctamente, así que después de muchas pruebas de código resolví este acertijo.
Nota: Estoy usando Windows 8 y mi barra de tareas no está en modo de ocultación automática.
Descubrí que configurar WindowState en Normal antes de realizar cualquier modificación detendrá el error con la barra de tareas no cubierta.
El código
Creé esta clase que tiene dos métodos, el primero entra en el "modo de pantalla completa" y el segundo sale del "modo de pantalla completa". Por lo tanto, solo necesita crear un objeto de esta clase y pasar el formulario que desea configurar a pantalla completa como argumento al método EnterFullScreenMode o al método 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;
}
}
Ejemplo de uso
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;
}
}
He colocado esta misma respuesta en otra pregunta de la que no estoy seguro si es un duplicado o no de esta. (Enlace a la otra pregunta: ¿Cómo mostrar un formulario de Windows Form en pantalla completa en la parte superior de la barra de tareas? )