设置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;
        }
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

JS之浏览器对象BOM

DOM Window 代表窗体 DOM History 历史记录 DOM Location 浏览器导航 重点:window、history、location ,...

4149
来自专栏Windows Community

Extensions in UWP Community Toolkit - ViewExtensions

概述 UWP Community Toolkit Extensions 中有一个为 View 提供的扩展 - View Extensions,本篇我们结合代码详...

3026
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何实现快速跳转网页

Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

1312
来自专栏小狼的世界

Silverlight学习笔记:改变控件的样式

Silverlight的控件都具有MS为我们赋予的默认样式,虽然这个样式也不怎么难看,但任何产品都很少用这个默认的样式去做最后的呈现,所以我们就需要对其进行修改...

741
来自专栏LanceToBigData

VSCode之快捷键和常用插件

最重要的功能就是 F1 或 Ctrl+Shift+P 打开的命令面板了,在这个命令框里可以执行VSCode的 任何一条命令,可以查看每条命令对应的快捷键,甚至...

981
来自专栏张高兴的博客

张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )

50410
来自专栏Porschev[钟慰]的专栏

解决文本框在updatepanel中得到焦点,输入法不能切换到中文的问题

今天看人提问才发现TextBox放在updatepanel中,当点击Button时,在Button的click事件中得到焦点。。。 本来应该用TextBox1....

1906
来自专栏陈仁松博客

UWP基础教程 - XAML依赖属性和附加属性

前面两章介绍了XAML的命名空间、元素和属性的概念,从本篇开始接下来会介绍XAML的高级特性,本篇主要会介绍两个概念: 依赖属性(Dependency Prop...

3395
来自专栏Angular&服务

VSCode开发Angular2+TypeScript插件

1.Angular TypeScript Snippets for VS Code 2.Angular VS Code TypeScript and HTML...

1472
来自专栏Android-薛之涛

Android 软键盘遮挡解决

        链接:https://www.jianshu.com/p/9eb57a8ff5e5

4054

扫码关注云+社区