C# 双显示器上的一个窗体,全屏

C# 双显示器上的一个窗体,全屏,c#,.net,C#,.net,我正在为一家非营利性企业制作屏幕保护程序。我已经完成了所有工作,除了主桌使用双显示器,而且Windows窗体不会在两个显示器上都显示。我的代码如下(检测到正确的双监视器分辨率)。对于双监视器,表单大小报告正确-但实际表单不会在第二个监视器上显示为扩展 我下面的代码是以加载事件的形式出现的。如果您能帮我把这件事做好,我们将不胜感激 Screen[] monitors = Screen.AllScreens; foreach (Screen screen in monitors) { to

我正在为一家非营利性企业制作屏幕保护程序。我已经完成了所有工作,除了主桌使用双显示器,而且Windows窗体不会在两个显示器上都显示。我的代码如下(检测到正确的双监视器分辨率)。对于双监视器,表单大小报告正确-但实际表单不会在第二个监视器上显示为扩展

我下面的代码是以加载事件的形式出现的。如果您能帮我把这件事做好,我们将不胜感激

Screen[] monitors = Screen.AllScreens;

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

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

你需要做的比你所拥有的更多

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

节目

for (int i = Screen.AllScreens.GetLowerBound(0);  
     i <= Screen.AllScreens.GetUpperBound(0); i++)
       System.Windows.Forms.Application.Run(new frmScreenSaver(i));
表单加载事件示例

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;
  ...
}
屏幕保护程序还有更多的注意事项,但是这应该为您指明正确的方向


此外,您可能只需通过边界,而不是索引

谢谢!这让我正确地移动了。我很感激!
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;
  ...
}