经过测试的简单解决方案
我一直在 SO 和其他一些网站上寻找这个问题的答案,但是一个给出的答案对我来说非常复杂,而其他一些答案根本无法正常工作,所以经过大量代码测试后,我解决了这个难题。
注意:我使用的是Windows 8,并且我的任务栏未处于自动隐藏模式。
我发现在执行任何修改之前将 WindowState 设置为 Normal 将停止未覆盖任务栏的错误。
编码
我创建了这个有两个方法的类,第一个进入“全屏模式”,第二个离开“全屏模式”。所以你只需要创建这个类的一个对象,并将你想要设置全屏的表单作为参数传递给 EnterFullScreenMode 方法或 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;
}
}
使用示例
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;
}
}
我已经在另一个问题上放置了相同的答案,我不确定它是否与这个问题重复。(链接到另一个问题:如何让 WinForms 应用程序全屏显示)