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);
把任何窗体显示在任何屏幕的方法:
-
-
protected void Form1_OnLoad(...) {
-
showOnMonitor(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);
-
-
this.WindowState = FormWindowState.Normal;
-
this.WindowState = FormWindowState.Maximized;
-
}
对WPF窗体来说,只要简单的更改即可:
首先要添加对 System.Windows.Forms 和 System.Drawing 的引用
简单的参考代码如下:
-
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;
-
-
-
}
注意:一定应该在窗体加载前,判断所要显示的屏幕是否存在,否则会报错!