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

当有多台显示设备,比如有两台显示器时,让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尺寸改变模式(可改变尺寸/不可改变尺寸/可最小化/可拖拽改变尺寸)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值