C# Screen 类(多屏幕开发)

Screen 类

下面的代码示例演示如何使用 Screen 类的各种方法和属性。 该示例调用 AllScreens 属性来检索连接到系统的所有屏幕的数组。 对于每个返回的 Screen,该示例将设备名称、边界、类型、工作区和主屏幕添加到 ListBox

 1 private void button1_Click(object sender, System.EventArgs e)
 2   {
 3       int index;
 4       int upperBound;
 5
 6       // Gets an array of all the screens connected to the system.
 7
 8
 9       Screen [] screens = Screen.AllScreens;
10       upperBound = screens.GetUpperBound(0);
11
12       for(index = 0; index <= upperBound; index++)
13       {
14
15           // For each screen, add the screen properties to a list box.
16
17
18           listBox1.Items.Add("Device Name: " + screens[index].DeviceName);
19           listBox1.Items.Add("Bounds: " + screens[index].Bounds.ToString());
20           listBox1.Items.Add("Type: " + screens[index].GetType().ToString());
21           listBox1.Items.Add("Working Area: " + screens[index].WorkingArea.ToString());
22           listBox1.Items.Add("Primary Screen: " + screens[index].Primary.ToString());
23
24       }
25
26   }

所谓的分屏或多屏软件,就是把软件中的多个窗体,在主屏幕运行,但是把各个窗体(坐标)移动到各个扩展屏幕位置上如下图所示:

主屏幕
(MainForm)
index=0
扩展屏幕1
(Form1)
index=1
扩展屏幕2
(Form2)
index=...
扩展屏幕3
(Form3)
index=...

以下介绍最常用的双屏幕显示,也就是左右模式的屏幕显示的方法。

WinForm 的实现办法:

利用WinForm中的Screen类,即可比较方便地实现多窗体分别在多个屏幕上显示。

  • 获取当前系统连接的屏幕数量: Screen.AllScreens.Count();
  • 获取当前屏幕的名称:string CurrentScreenName = Screen.FromControl(this).DeviceName;
  • 获取当前屏幕对象:Screen CurrentScreen = Screen.FromControl(this);
  • 获取当前鼠标所在的屏幕:Screen CurrentScreen = Screen.FromPoint(new Point(Cursor.Position.X, Cursor.Position.Y));
  • 让窗体在第2个屏幕上显示:

this.Left = ((Screen.AllScreens[1].Bounds.Width - this.Width) / 2);
     this.Top = ((Screen.AllScreens[1].Bounds.Height - this.Height) / 2);

把任何窗体显示在任何屏幕的方法:

Winform:

1 Screen[] sc;
2             sc = Screen.AllScreens;
3             this.StartPosition = FormStartPosition.Manual;
4             this.Location = new Point(sc[1].Bounds.Left, sc[1].Bounds.Top);
5             // If you intend the form to be maximized, change it to normal then maximized.
6             this.WindowState = FormWindowState.Normal;
7             this.WindowState = FormWindowState.Maximized;
8             MessageBox.Show(this.Handle.ToString());

WPF:

 1 protected override void OnStartup(StartupEventArgs e)
 2         {
 3             base.OnStartup(e);
 4
 5             Window1 w1 = new Window1();
 6             Window2 w2 = new Window2();
 7
 8
 9             Screen s1 = Screen.AllScreens[0];
10             Screen s2 = Screen.AllScreens[1];
11
12             Rectangle r1 = s1.WorkingArea;
13             Rectangle r2 = s2.WorkingArea;
14
15             w1.Top = r1.Top;
16             w1.Left = r1.Left;
17
18             w2.Top = r2.Top;
19             w2.Left = r2.Left;
20
21             w1.Show();
22             w2.Show();
23
24             w2.Owner = w1;
25
26
27         }

C# Screen 类(多屏幕开发)

时间: 2024-08-25 21:48:36

C# Screen 类(多屏幕开发)的相关文章

纯C++打造的Splash Screen类(打造专业的启动画面)

Introduction 每一个应用程序可能都需要一个"about box"和程序启动时一个"splash screen"(启动画面),大多数开发者都使用自带的""about dialog"".我创建了一个类CSplashScreen,都可以处理这两者,使开发变的容易,有趣!从小的对话框组件程序到需要加在几分复杂程序,我都会使用这个类. 这个类有两个文件组成,SplashScreen.h 和 SplashScreen.cpp.

C#& Screen 类&(&多&屏&幕&开&发)

原文:C#& Screen 类&(&多&屏&幕&开&发) Screen 类 下面的代码示例演示如何使用 Screen 类的各种方法和属性. 该示例调用 AllScreens 属性来检索连接到系统的所有屏幕的数组. 对于每个返回的 Screen,该示例将设备名称.边界.类型.工作区和主屏幕添加到 ListBox. 1 private void button1_Click(object sender, System.EventArgs e) 2 { 3

mybatis10 实现类代理对象开发

mapper实现类代理对象开发 要想让mybatis自动创建dao接口实现类的代理对象,必须遵循一些规则: SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.close(); 这2步好封装,代理类写死就可以了,以后自动生成就可以了. User user = sqlSession.selectOne("test.findUserById", id);不好封装,因为test.findUserById是变动

[精品] 收集的27个java开发常用工具类.基本满足开发需求

原文:[精品] 收集的27个java开发常用工具类.基本满足开发需求 源代码下载地址:http://www.zuidaima.com/share/1596028005993472.htm 最近从网上收集的java开发常用的工具类,分享给大家.基本满足开发需求.推荐给热爱最代码以及java的牛牛们.   每个类都有注释的,欢迎大家可以下载使用. 字符编码:CharTools, base64:Base64 *.java Md5加密:  MD5*.java 上传:*Uploader* 生成缩略图类:T

C#中多屏现实--Screen类的使用

Screen类 表示单个系统上的一个或多个显示设备 命名空间:System.Windows.Forms 程序集:System.Windows.Forms(在System.Windows.Forms.dll中) 语法:public class Screen 此对象的构造函数不是公共的,因此无法显示创建Screen对象,该对象在调用公共方法时创建. Screen.AllScreens属性: 获取系统上所有显示器的数组. 语法:public static Screen[] AllScreens{get

如何精准的找到社交类APP软件开发服务商

随着移动互联网的快速发展,社交APP已成为人们生活中不可或缺的一部分了,这既是时代快速发展下的产物,同时也给人们带来了极大的社交便利性.那么在同质化如此严重的市场中,如何找到合适的社交类APP软件开发服务商呢?社交APP的开发不应再局限于传统的移动社交模式,只有从社交方式上加以创新,社交APP才能更加成功地做到脱颖而出.那么做为一个需求用户,如何才能找到合适的社交类APP软件开发服务商呢?第一点:精准的领域首先我们需要对方的基本信息,以及有没有做过社交app的经验和案例,一个好的服务商都有丰富的

wift - 使用UIScreen类获取屏幕大小尺寸

UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen.mainScreen().bounds println(screenBounds) //iPhone6输出:(0.0,0.0,375.0,667.0) //获取屏幕大小(不包括状态栏高度) var viewBounds:CGRect = UIScreen.mainScreen().applicati

使用@media screen解决移动web开发的多分辨率问题

当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240像素的屏幕,到现在1920×1080分辨率的屏幕.各种分辨率的屏幕让前端开发的人们叫苦连连,如何使用一种有效的方式来解决各种屏幕分辨率下的用户体验呢? 在css2中就有media type属性,用于判断媒体类型.而在css3中新增了 media query属性用于增强media type属性.因此当

android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏

标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android(11) 转自:http://blog.csdn.net/bromon/article/details/253330 Bromon原创 请尊重版权 一个多人在线的棋牌类网络游戏的项目临近尾声,我参与了该项目的整个设计流程,并且完成了90%的核心代码.关于这个项目,有很多地方值得聊一聊.本系列不打算把这个项目将得多么详细规范,那是设计文档应该描述的,我打算只说说一些值得注意