Да, все экраны образуют гигантскую виртуальную поверхность, на которой вы можете разместить свою форму. Вам нужно просто установить местоположение формы в верхнем левом углу этой поверхности, а ее размер - в размере этой поверхности.
Вы можете найти экстент этой поверхности с помощью следующего кода:
private static Rectangle GetVirtualDisplayBounds()
{
Screen[] allScreens = Screen.AllScreens;
Point topLeft = allScreens[0].Bounds.Location;
Point bottomRight = topLeft + allScreens[0].Bounds.Size;
foreach (Screen screen in allScreens.Skip(1))
{
topLeft = new Point(Math.Min(topLeft.X, screen.Bounds.X),
Math.Min(topLeft.Y, screen.Bounds.Y));
bottomRight = new Point(Math.Max(bottomRight.X, screen.Bounds.Right),
Math.Max(bottomRight.Y, screen.Bounds.Bottom));
}
return new Rectangle(topLeft.X, topLeft.Y, bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y);
}
Затем вы можете изменить размер вашей формы соответствующим образом:
var bounds = GetVirtualDisplayBounds();
form.Location = bounds.Location;
form.Size = bounds.Size;
Вы также можете отключить границы формы:
form.FormBorderStyle = FormBorderStyle.None;
Однако я заметил, что когда вы показываете свою форму, она возвращается в положение 0,0, что означает, что если у вас есть какие-либо мониторы, расположенные выше или слева от этой точки, они не будут покрыты. Чтобы решить эту проблему, вам нужно установить местоположение после , форма будет показана.