步骤1:编写一个包含静态方法Hide()和Show()的类,用于任务栏。
public class Taskbar
{
[DllImport("user32.dll")]
private static extern int FindWindow(string className, string windowText);
[DllImport("user32.dll")]
private static extern int ShowWindow(int hwnd, int command);
private const int SW_HIDE = 0;
private const int SW_SHOW = 1;
protected static int Handle
{
get
{
return FindWindow("Shell_TrayWnd", "");
}
}
private Taskbar()
{
}
public static void Show()
{
ShowWindow(Handle, SW_SHOW);
}
public static void Hide()
{
ShowWindow(Handle, SW_HIDE);
}
}
步骤2:连接到窗口关闭事件,以便在使用Alt+F4关闭窗口时恢复任务栏。
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
Taskbar.Show();
}
隐藏任务栏并显示全屏:
Taskbar.Hide();
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
ResizeMode = ResizeMode.NoResize;
Width = System.Windows.SystemParameters.PrimaryScreenWidth;
Height = System.Windows.SystemParameters.PrimaryScreenHeight;
Topmost = true;
Left = 0;
Top = 0;
显示任务栏并在窗口中运行
Taskbar.Show();
WindowStyle = WindowStyle.SingleBorderWindow;
WindowState = WindowState.Normal;
ResizeMode = ResizeMode.CanResize;
Width = System.Windows.SystemParameters.WorkArea.Width-100;
Height = System.Windows.SystemParameters.WorkArea.Height-100;
Topmost = false;
Left = 0;
Top = 0;
本内容测试于Windows 10 1703版本(创作者更新)。
![在此输入图片描述](https://istack.dev59.com/HRDgk.webp)
WindowStyle=None
和WindowState=Maximized
(按这个顺序!),在Windows 7和Windows 8.1上都没有问题。但是一旦我的应用程序打开一个对话框窗口,在Windows 10上任务栏就会出现在最上面,而且除非切换到另一个窗口并返回到我的应用程序,否则它不会消失。ResizeMode=NoResize
解决了这个问题! - Nicolas