全屏窗体的完整方法:
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);