Winform/WPF 开发分屏显示应用程序

原创 2015年07月14日 13:38:53

转自:http://blog.csdn.net/soft2buy/article/details/7082668

分屏显示即可把一台主机内运行的多个程序分别显示在不同的两个(或多个)屏幕上。目前市面上主流的显卡都支持分屏显示(显示双屏幕),如果需要显示2个以上的屏幕,则应使用“拖机卡”类的硬件。

设置分屏显示的两种方法如下:

1、用两个显卡连接两台显示器,进入系统后,分清楚哪一个是主显卡,在桌面空白处右键单击,点属性,然后在窗口中点“设置”选项卡,会看到有两个显示,分别是1(主显卡)和2(副显卡),点击那个2,在下面的“将windows桌面扩展到该监视器”打上对号,确定后,你试着把鼠标往主显示器右边界移动,再移动,鼠标会跑到第二台显示器上去了,这样,同样运行几个程序,分别将它们的窗口拖拽到两个显示器的区域中就可以了,这实际上是将桌面扩展了一下。

2、使用专门的硬件。可以使用“一拖多”的拖机卡,只要将设备插入usb口中,将设备上引出的两个ps/2口分别接鼠标和键盘,主机中还是有两块显卡,然后再装上这个设备的专用软件,重启后,经过简单的配置,即可实现“完全”独立的两个系统。


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

主屏幕
(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);

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

  1. //在窗体的OnLoad事件中调用该方法   
  2. protected void Form1_OnLoad(...) {  
  3.     showOnMonitor(1);//index=1  
  4. }  
  5.   
  6. private void showOnMonitor(int showOnMonitor)   
  7. {   
  8.     Screen[] sc;   
  9.     sc = Screen.AllScreens;   
  10.     if (showOnMonitor >= sc.Length) {  
  11.         showOnMonitor = 0;  
  12.     }  
  13.   
  14.   
  15.     this.StartPosition = FormStartPosition.Manual;   
  16.     this.Location = new Point(sc[showOnMonitor].Bounds.Left, sc[showOnMonitor].Bounds.Top);  
  17.     // If you intend the form to be maximized, change it to normal then maximized.  
  18.     this.WindowState = FormWindowState.Normal;  
  19.     this.WindowState = FormWindowState.Maximized;  
  20. }  

对WPF窗体来说,只要简单的更改即可:
首先要添加对 System.Windows.Forms 和 System.Drawing 的引用
简单的参考代码如下:
  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.         }  



注意:一定应该在窗体加载前,判断所要显示的屏幕是否存在,否则会报错!

PLC编程端口以及 FX-232AW 模块的通信

该协议实际上适用于PLC编程端口以及 FX-232AW 模块的通信。 通讯格式: 命令 命令码 目标设备 DEVICE READ CMD "0" X,Y,M,S,T,C,D DEVICE WR...
  • wzk456
  • wzk456
  • 2014年11月11日 00:25
  • 1046

三菱FX系列PLC编程口通信协议举例

本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用 SC-09 编程电缆作为计算机与 PLC 通信的连线。电缆的 9 芯 D 形插头连接在计算机...
  • wzk456
  • wzk456
  • 2015年05月23日 15:16
  • 6486

c# Winform/WPF 开发分屏显示应用程序

分屏显示即可把一台主机内运行的多个程序分别显示在不同的两个(或多个)屏幕上。目前市面上主流的显卡都支持分屏显示(显示双屏幕),如果需要显示2个以上的屏幕,则应使用“拖机卡”类的硬件。 设置分屏显示的...
  • soft2buy
  • soft2buy
  • 2011年12月18日 23:34
  • 13187

c# Winform/WPF 开发分屏显示应用程序

分屏显示即可把一台主机内运行的多个程序分别显示在不同的两个(或多个)屏幕上。目前市面上主流的显卡都支持分屏显示(显示双屏幕),如果需要显示2个以上的屏幕,则应使用“拖机卡”类的硬件。 设置分屏显示的...

c# Winform 开发分屏显示应用程序

c# Winform 开发分屏显示应用程序

在WinForm应用程序中嵌入WPF控件

我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类。而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是为了...
  • peng21o
  • peng21o
  • 2012年08月14日 10:48
  • 555

Winform and WPF 第二遍双击快捷方式或应用程序打开原来的应用程序而不新建一个实例[进程通信 1]

今天工作忙完之余,总结一些Winform WPF应用程序,第二遍双击快捷方式或应用程序打开原来的应用程序而不新建一个实例。 下面两个例子分别用了两种不同的方式实现了进程间的通信。   ------...
  • wzhiu
  • wzhiu
  • 2012年06月19日 15:16
  • 3121

用Visual C#开发WinForm的应用程序

  • 2009年01月20日 21:04
  • 30KB
  • 下载

放弃winform的窗体吧,改用html作界面,桌面应用程序UI的新的开发方式。

做过很多winform项目,都为winform控件头疼不已。想实现一些漂亮的样子总是很难。我这里列举几个缺点: 1.winform控件大多是 绝对布局 ,你需要给出准确的坐标。那么在实现居中效果就会...
  • vir56k
  • vir56k
  • 2015年08月14日 14:52
  • 2967

WPF应用程序显示控制台

注意 WPF应用程序默认情况下是不会显示控制台的,有时候我们却有着样子的需求想要显示控制台,因此以下是一种解决方法: 首先 新建一个WPF应用程序,默认有个叫做MainWindow的xaml文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Winform/WPF 开发分屏显示应用程序
举报原因:
原因补充:

(最多只允许输入30个字)