zoukankan      html  css  js  c++  java
  • winform窗体全屏

    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);

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    class WindowsFullScreenApi
        {
            [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")]
            public static extern int GetSystemMetrics(int which);
     
            [DllImport("user32.dll")]
            public static extern void
                SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter,
                             int X, int Y, int width, int height, uint flags);
     
            private const int SM_CXSCREEN = 0;
            private const int SM_CYSCREEN = 1;
            private static IntPtr HWND_TOP = IntPtr.Zero;
            private const int SWP_SHOWWINDOW = 64; // 0x0040
     
            public static int ScreenX
            {
                get { return GetSystemMetrics(SM_CXSCREEN); }
            }
     
            public static int ScreenY
            {
                get { return GetSystemMetrics(SM_CYSCREEN); }
            }
     
            public static void SetWinFullScreen(IntPtr hwnd)
            {
                SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW);
            }
        }

    调用::全屏

    FormBorderStyle = FormBorderStyle.None;
                    WindowState = FormWindowState.Maximized;
                    WindowsFullScreenApi.SetWinFullScreen(Handle);

    调用::恢复

    FormBorderStyle = FormBorderStyle.Sizable;
                    WindowState = FormWindowState.Maximized;//自己控制恢复后是什么状态

  • 相关阅读:
    Optimal Logging
    表单设计平台主要功能截图介绍
    表单设计器在线测试地址
    React-Native 之控件布局
    Week,Month, Year 日期区间辅助类
    WPF 文本框添加水印效果
    WPF 自定义窗口
    正则表达式总结
    基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用
    基于Extjs的web表单设计器 第七节——取数公式设计之取数公式定义
  • 原文地址:https://www.cnblogs.com/furenjian/p/3272912.html
Copyright © 2011-2022 走看看