我正在为非营利组织制作屏幕保护程序。除主办公桌使用双显示器外,我已经完成所有工作,并且Windows窗体不会在两台显示器上显示。我的代码在下面(检测到正确的双显示器分辨率)。表单大小可以正确报告双监视器-但是实际的表单不会在第二个监视器上显示为扩展状态。
我下面的代码在Form_Load事件中。对于使此方法正常工作的任何帮助,将不胜感激。
Screen[] monitors = Screen.AllScreens;
foreach (Screen screen in monitors)
{
totalwidth += screen.WorkingArea.Width;
}
this.Size = new Size(totalwidth, ClientSize.Height);
答案 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;
...
}
关于屏幕保护程序的警告更多,但这应该为您指明正确的方向
此外,您可能只传递边界,而不是索引