zoukankan      html  css  js  c++  java
  • 设置WPF窗体全屏显示:

    //全屏代码:
    private
    void Window_Loaded(object sender, RoutedEventArgs e)
    {
    // 设置全屏 this.WindowState = System.Windows.WindowState.Normal; this.WindowStyle = System.Windows.WindowStyle.None; this.ResizeMode = System.Windows.ResizeMode.NoResize; this.Topmost = true; this.Left = 0.0; this.Top = 0.0; this.Width = System.Windows.SystemParameters.PrimaryScreenWidth; this.Height = System.Windows.SystemParameters.PrimaryScreenHeight; }

     扩展类:

    项目先引用下面dll:

    1:System.Windows.Forms;  2:System.Drawing;

    public static class ExpendMethod
        {
            private static Window _fullWindow;
            private static WindowState _windowState;
            private static WindowStyle _windowStyle;
            private static bool _windowTopMost;
            private static ResizeMode _windowResizeMode;
            private static Rect _windowRect;
    
            /// <summary>
            /// 进入全屏    
            /// </summary>
            /// <param name="window"></param>
            public static void GoFullscreen(this Window window)
            {
                //已经是全屏 
                if (window.IsFullscreen()) return;
    
                //存储窗体信息       
                _windowState = window.WindowState;
                _windowStyle = window.WindowStyle;
                _windowTopMost = window.Topmost;
                _windowResizeMode = window.ResizeMode;
                _windowRect.X = window.Left;
                _windowRect.Y = window.Top;
                _windowRect.Width = window.Width;
                _windowRect.Height = window.Height;
    
    
                //变成无边窗体 
                window.WindowState = WindowState.Normal;//假如已经是Maximized,就不能进入全屏,所以这里先调整状态 
                window.WindowStyle = WindowStyle.None;
                window.ResizeMode = ResizeMode.NoResize;
                window.Topmost = true;//最大化后总是在最上面 
    
                //获取窗口句柄 
                var handle = new WindowInteropHelper(window).Handle;
                //获取当前显示器屏幕
                Screen screen = Screen.FromHandle(handle);
    
                //调整窗口最大化,全屏的关键代码就是下面3句 
                window.MaxWidth = screen.Bounds.Width;
                window.MaxHeight = screen.Bounds.Height;
                window.WindowState = WindowState.Maximized;
    
                //解决切换应用程序的问题
                window.Activated += new EventHandler(window_Activated);
                window.Deactivated += new EventHandler(window_Deactivated);
                //记住成功最大化的窗体 
                _fullWindow = window;
            }
    
            static void window_Deactivated(object sender, EventArgs e)
            {
                var window = sender as Window;
                window.Topmost = false;
            }
            static void window_Activated(object sender, EventArgs e)
            {
                var window = sender as Window;
                window.Topmost = true;
            }
    
            /// <summary>
            /// 退出全屏
            /// </summary>
            /// <param name="window"></param>
            public static void ExitFullscreen(this Window window)
            {
                //已经不是全屏无操作 
                if (!window.IsFullscreen()) return;
                //恢复窗口先前信息,这样就退出了全屏 
                window.Topmost = _windowTopMost;
                window.WindowStyle = _windowStyle;
                window.ResizeMode = ResizeMode.CanResize;//设置为可调整窗体大小 
                window.Left = _windowRect.Left;
                window.Width = _windowRect.Width;
                window.Top = _windowRect.Top;
                window.Height = _windowRect.Height;
                window.WindowState = _windowState;//恢复窗口状态信息 
                window.ResizeMode = _windowResizeMode;//恢复窗口可调整信息 
                //移除不需要的事件 
                window.Activated -= window_Activated;
                window.Deactivated -= window_Deactivated;
                _fullWindow = null;
            }
    
            /// <summary>
            /// 窗体是否在全屏状态
            /// </summary>
            /// <param name="window"></param>
            /// <returns></returns>
            public static bool IsFullscreen(this Window window)
            {
                if (window == null)
                    throw new ArgumentNullException("window");
                return _fullWindow == window;
            }
        }
    Top
    收藏
    关注
    评论
  • 相关阅读:
    kafka与Rocketmq的区别
    CentOS7 安装特定版本的Docker brady
    Postgresql Error : must be superuser to alter superusers.
    php 用redis实现购物车底层代码
    查找文件夹中包含某字符的文件和行数
    utabs 下划线在微信端不出来
    PHP的生成器yield处理大量数据杠杠
    direction: rtl;
    强制html以https格式访问引入文件
    uviewui 引入 easycom 不用每个页面都引入
  • 原文地址:https://www.cnblogs.com/smiler/p/3105317.html
Copyright © 2011-2022 走看看