全屏窗体的完整方法:
1.隐藏任务栏
2.设置工作区域
3.窗体最大化
此方法通用wince/mobile/ppc,但api声明要修改为coredll.dll的引用。 bool fullscreen = false; Rectangle rect = new Rectangle(); private void button4_Click(object sender, EventArgs e) { fullscreen = !fullscreen;//循环。点一次全屏,再点还原。 SetFullScreen(fullscreen, ref rect); if (fullscreen) { this.WindowState = FormWindowState.Maximized;//全屏 } else { this.WindowState = FormWindowState.Normal;//还原 } }
/// <summary> /// 设置全屏或这取消全屏 /// </summary> /// <param name="fullscreen">true:全屏 false:恢复</param> /// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param> /// <returns>设置结果</returns> public static bool SetFullScreen(bool fullscreen, ref Rectangle rectOld) { int Hwnd = 0; Hwnd = FindWindow("Shell_TrayWnd", null); if (Hwnd == 0) return false; if (fullscreen) { ShowWindow(Hwnd, SW_HIDE); Rectangle rectFull = Screen.PrimaryScreen.Bounds; SystemParametersInfo(SPI_GETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//get SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectFull, SPIF_UPDATEINIFILE);//set } else { ShowWindow(Hwnd, SW_SHOW); SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE); } return true; }
[DllImport("user32.dll", EntryPoint = "ShowWindow")] public static extern int ShowWindow(int hwnd, int nCmdShow); public const int SW_SHOW = 5; public const int SW_HIDE = 0;
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")] private static extern int SystemParametersInfo(int uAction, int uParam, ref Rectangle lpvParam, int fuWinIni); public const int SPIF_UPDATEINIFILE = 0x1; public const int SPI_SETWORKAREA = 47; public const int SPI_GETWORKAREA = 48;
[DllImport("user32.dll", EntryPoint = "FindWindow")] private static extern int FindWindow(string lpClassName, string lpWindowName);
|