Развернуть форму на все экраны - PullRequest
0 голосов
/ 28 сентября 2010

Вопрос прост: есть ли способ расширить одну форму на все подключенные экраны?

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Нет, если только вы не собираетесь кодировать на достаточно низкоуровневом языке, таком как C, и получить доступ к графической памяти.

Как правило, именно операционная система выполняет макет для вас, поэтому, если у вас нет низкоуровневого доступа или API, опубликованного поставщиком, я думаю, это будет довольно сложно.

0 голосов
/ 13 октября 2015

Да, все экраны образуют гигантскую виртуальную поверхность, на которой вы можете разместить свою форму. Вам нужно просто установить местоположение формы в верхнем левом углу этой поверхности, а ее размер - в размере этой поверхности.

Вы можете найти экстент этой поверхности с помощью следующего кода:

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, что означает, что если у вас есть какие-либо мониторы, расположенные выше или слева от этой точки, они не будут покрыты. Чтобы решить эту проблему, вам нужно установить местоположение после , форма будет показана.

...