WPF随笔(四)--窗口多屏显示及全屏

WPF 专栏收录该内容
32 篇文章 12 订阅

当有多台显示设备,比如有两台显示器时,让WPF窗体在不同显示器上呈现不同内容就显得尤为必要。同时让窗口全屏显示也能取得较好的呈现效果。

一般来讲WPF项目默认都是从MainWindow开始启动的。多屏显示的思路很简单,就是遍历当前所有硬件显示设备,然后实例化不同的窗体并分别设置其位置在不同的显示设备上。

遍历显示设备

        public MainWindow(string sysName, int timeState)
        {
            InitializeComponent();
			//查找当前屏幕数量
            if (System.Windows.Forms.Screen.AllScreens.Count() >= 2)
            {
                Dispatcher.Invoke(
                    () =>
                    {
                        try
                        {
                            NewWindow win= new NewWindow();
                            win.Show();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                    );
            }

        }

窗口实例化

        public NewWindow()
        {
            InitializeComponent();

            foreach (Screen scr in Screen.AllScreens)
            {
                if (!scr.Primary)
                {
                	//设置窗体位置
                    WindowStartupLocation = WindowStartupLocation.Manual;
                    Left = scr.WorkingArea.Left;
                    Top = scr.WorkingArea.Top;
                    Width = scr.Bounds.Width;
                    Height = scr.Bounds.Height;
                    Topmost = true;
                    WindowState = WindowState.Maximized;
                    ResizeMode = ResizeMode.NoResize;
                    WindowStyle = WindowStyle.None;
                    WindowState = WindowState.Normal;
                    ShowInTaskbar = false;

                    break;
                }
            }
        }

窗体全屏

<Controls:MetroWindow x:Class="WPFDemo.Metro.MainWindow"
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                      xmlns:local="clr-namespace:WPFDemo.Metro"
        Title="MainWindow" Height="480" Width="800" 
                      WindowState="Maximized"
                      WindowStyle="None"
                      Topmost="True"
                      ShowInTaskbar="False"
                      ResizeMode="NoResize">

关键点在于以下几个属性的设置:

属性名称意义
WindowState窗口状态(最大化/最小化/普通)
WindowStyle窗口样式(无边框/带工具栏/仅含关闭按钮/包含最大化、最小化、关闭按钮)
Topmost是否在最前面显示
ShowInTaskbar是否在任务栏显示
ResizeMode尺寸改变模式(可改变尺寸/不可改变尺寸/可最小化/可拖拽改变尺寸)
  • 2
    点赞
  • 0
    评论
  • 18
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字50 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值