C# WinFrom分屏显示

2020/2/12



  

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);
 
把任何窗体显示在任何屏幕的方法:
 
[csharp] view plaincopy
 
 
//在窗体的OnLoad事件中调用该方法  
protected void Form1_OnLoad(...) {  
    showOnMonitor(1);//index=1  
}  
  
private void showOnMonitor(int showOnMonitor)   
{   
    Screen[] sc;   
    sc = Screen.AllScreens;   
    if (showOnMonitor >= sc.Length) {  
        showOnMonitor = 0;  
    }  
  
  
    this.StartPosition = FormStartPosition.Manual;   
    this.Location = new Point(sc[showOnMonitor].Bounds.Left, sc[showOnMonitor].Bounds.Top);  
    // If you intend the form to be maximized, change it to normal then maximized.  
    this.WindowState = FormWindowState.Normal;  
    this.WindowState = FormWindowState.Maximized;  
}  

对WPF窗体来说,只要简单的更改即可:
首先要添加对 System.Windows.Forms 和 System.Drawing 的引用
简单的参考代码如下:
[csharp] view plaincopy
 
 
protected override void OnStartup(StartupEventArgs e)  
        {  
            base.OnStartup(e);  
  
            Window1 w1 = new Window1();  
            Window2 w2 = new Window2();  
  
  
            Screen s1 = Screen.AllScreens[0];  
            Screen s2 = Screen.AllScreens[1];  
  
            Rectangle r1 = s1.WorkingArea;  
            Rectangle r2 = s2.WorkingArea;  
  
            w1.Top = r1.Top;  
            w1.Left = r1.Left;  
  
            w2.Top = r2.Top;  
            w2.Left = r2.Left;  
  
            w1.Show();  
            w2.Show();  
  
            w2.Owner = w1;  
  
  
        }  
注意:一定应该在窗体加载前,判断所要显示的屏幕是否存在,否则会报错!