双显示器的一种形式,全屏

时间:2018-09-07 03:28:31

标签: c# .net

我正在为非营利组织制作屏幕保护程序。除主办公桌使用双显示器外,我已经完成所有工作,并且Windows窗体不会在两台显示器上显示。我的代码在下面(检测到正确的双显示器分辨率)。表单大小可以正确报告双监视器-但是实际的表单不会在第二个监视器上显示为扩展状态。

我下面的代码在Form_Load事件中。对于使此方法正常工作的任何帮助,将不胜感激。

Screen[] monitors = Screen.AllScreens;

foreach (Screen screen in monitors)
{
    totalwidth += screen.WorkingArea.Width;
}

this.Size = new Size(totalwidth, ClientSize.Height);

1 个答案:

答案 0 :(得分:1)

您需要做的比您要做的还要多。

从本质上讲,您将必须为每个屏幕创建一个新表单

程序

for (int i = Screen.AllScreens.GetLowerBound(0);  
     i <= Screen.AllScreens.GetUpperBound(0); i++)
       System.Windows.Forms.Application.Run(new frmScreenSaver(i));

示例表单构造器

public frmScreenSaver(int scrn)
{
  ...
  ScreenNumber = scrn;
  ...
}

示例表单加载事件

private void frmScreenSaver_Load(object sender, System.EventArgs e)
{
  ...
  // fit the screen
  Bounds = Screen.AllScreens[ScreenNumber].Bounds;
  // hide the cursor... seems appropriate
  Cursor.Hide(); 
  // make it TopMost
  TopMost = true;
  ...
}

关于屏幕保护程序的警告更多,但这应该为您指明正确的方向

此外,您可能只传递边界,而不是索引