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

原文: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 类&(&多&屏&幕&开&发)

原文地址:https://www.cnblogs.com/lonelyxmas/p/11106178.html

时间: 2024-10-16 01:03:56

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

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

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

详解使用w?s?g?e?n?和?w?s?i?m?p?o?r?t?开?发?W?e?b?S?e?r?v?i?c?e

本文旨在描述如何使用jdk自带的wsgen.exe 和wsimport.exe开发WebService. 1.新建一个java工程,项目名:WebServiceDemo.由于本文想通过完全手动建立的方式来演示整个过程,故我们的工程目录就是WebServiceDemo啦! 2.在此目录下新建Business.java 和 BusinessImpl.java两个类,分别如下: public interface Business { public String echo(String message)

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

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

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

m?y?e?c?l?i?p?s?e? ?环?境?下?整?合?开?发? ?s?t?r?u?t?s?2?+?s?p?r?i?n?g?+?h?i?b?e?r?n?a?t?e? ?常?见?问?题?及?解?答

myeclipse 环境下整合开发 struts2+spring+hibernate 常见问题及解答 1. org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): 异常原因: <id> 元素配置不正确, <id> 元素缺少其子元素 <generator></generator> 的配

宁波开发票

[13538017315 戴先生 QQ2016771784].工业统一.商业统一 .今年上半年的楼市库存量和成交量,项目销售周期加长,周转速度减慢,催生了房地产企业财务费用大涨的现象编者按:在购房者普遍预计房价将大幅下调的同时,资本市场也对房企的未来打上了问号.房企的融资成本无疑会大幅增加.这在一定程度上,也加剧了房企资金链的紧张程度.在多个因素的合力下,不难预料,房企“以价换量”的力度将进一步加深.本报记者 王丽新截至8月23日,<日报>记者根据Wind资讯统计数据发现,按照申银万国房地产行

杭州代开发票

[13538017315 戴先生 QQ2016771784].工业统一.商业统一 .今年上半年的楼市库存量和成交量,项目销售周期加长,周转速度减慢,催生了房地产企业财务费用大涨的现象编者按:在购房者普遍预计房价将大幅下调的同时,资本市场也对房企的未来打上了问号.房企的融资成本无疑会大幅增加.这在一定程度上,也加剧了房企资金链的紧张程度.在多个因素的合力下,不难预料,房企“以价换量”的力度将进一步加深.本报记者 王丽新截至8月23日,<日报>记者根据Wind资讯统计数据发现,按照申银万国房地产行

unity3D 锁屏再开程序崩溃

在Uniyt3d 调用Android Plugin 的时候,会出现锁屏后再开,程序就崩溃的的现象,解决办法就是在 AndroidManifest.xml 加入  android:configChanges 属性,例如: <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"                   android:label="@string/app_name"  

沈阳代开发票

[13538017315戴先生QQ2016771784].工业统一.商业统一.今年上半年的楼市库存量和成交量,项目销售周期加长,周转速度减慢,催生了房地产企业财务费用大涨的现象编者按:在购房者普遍预计房价将大幅下调的同时,资本市场也对房企的未来打上了问号.房企的融资成本无疑会大幅增加.这在一定程度上,也加剧了房企资金链的紧张程度.在多个因素的合力下,不难预料,房企“以价换量”的力度将进一步加深.本报记者王丽新截至8月23日,<日报>记者根据Wind资讯统计数据发现,按照申银万国房地产行业分类,