当前位置: 首页 > news >正文

WPF C# 多屏情况下,实现窗体显示到指定的屏幕内

原文: WPF C# 多屏情况下,实现窗体显示到指定的屏幕内

针对于一个程序,需要在两个显示屏上显示不同的窗体,(亦或N个显示屏N个窗体),可以使用如下的方式实现。

主要涉及到的:System.Windows.Forms.Screen.AllScreens和WindowState属性

 

 

1、首先Window.WindowState属性,其类型是一个枚举,若想在指定的屏幕上显示WindowState属性不能为Maximized,当为Maximized时窗体会显示在主屏上

namespaceSystem.Windows

{

   //    指定是最小化、最大化还是还原窗口

   public enum WindowState

   {

       //    还原窗口。

       Normal = 0,

       //    最小化窗口。

       Minimized = 1,

       //    最大化窗口。

       Maximized = 2

   }

}

 

 

2、System.Windows.Forms.Screen.AllScreens属性提供获取获取系统上所有显示器的数组,因此我们通过此属性获取各个屏幕的参数,从而使用Window.Top和Window.Left设置偏移参数实现窗体显示位置。

Eg:例子实现传入屏幕Screen 对象,让窗体显示到指定的屏幕Screen 中。

public void  Display(System.Windows.Forms.Screen screen)

       {

            Window window = m_RootCtrlasWindow;// RootCtrl为Window类实例

            if (window != null)

            {

                window.Top = 0;

                window.Left =screen.WorkingArea.Left;

                window.Show();

            }

       }

 


调用:m_window.Display(System.Windows.Forms.Screen.AllScreens[0]);//显示到第一块屏幕上。


注:假设屏幕分辨率是1920*1080,有两屏幕,多屏的情况下主屏的左上角的坐标为(0,0),第二个屏幕左上角坐标是(1920,0)

.说白了,就是让窗体自动偏移到指定的屏幕中,并且要注意Window.WindowState属性的设置。

 



相关文章:

  • TCP三次握手和四次挥手以及11种状态
  • 导航栏的隐藏问题
  • PostgreSQL 数据库导入导出操作
  • 20181016提高测试
  • QPS的计算方法
  • 网站服务器部署及优化---1---LAMP环境搭建(rhel6.5)
  • C语言精要(第二章:基本数据类型)
  • Linux实现Cisco风格ACL之空想
  • Android自动化测试+性能监控预警系统搭建
  • Python 3.x 模块
  • java 不可不知的数据库知识-----事物
  • JavaScript 浏览器对象(三)
  • 命令行程序测试自动化
  • Linux命令行翻译工具
  • 保障邮件安全
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Centos6.8 使用rpm安装mysql5.7
  • JavaWeb(学习笔记二)
  • LeetCode算法系列_0891_子序列宽度之和
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • ReactNative开发常用的三方模块
  • SpingCloudBus整合RabbitMQ
  • TypeScript实现数据结构(一)栈,队列,链表
  • 警报:线上事故之CountDownLatch的威力
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #pragma data_seg 共享数据区(转)
  • #控制台大学课堂点名问题_课堂随机点名
  • $ git push -u origin master 推送到远程库出错
  • (52)只出现一次的数字III
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (十)c52学习之旅-定时器实验
  • (一)认识微服务
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)linux 命令大全
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 受管制代码
  • .Net 应用中使用dot trace进行性能诊断
  • .net/c# memcached 获取所有缓存键(keys)
  • .net反混淆脱壳工具de4dot的使用
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [Android]通过PhoneLookup读取所有电话号码
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BJDCTF 2020]easy_md5
  • [C++]运行时,如何确保一个对象是只读的
  • [C语言]——C语言常见概念(1)
  • [HXPCTF 2021]includer‘s revenge
  • [iHooya]2023年1月30日作业解析
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [javaSE] GUI(Action事件)