Проблема с несколькими мониторами в Windows Screensaver - PullRequest
0 голосов
/ 18 декабря 2009

У меня есть написанная мной простая заставка, которая была развернута на всех клиентских ПК нашей компании.

Поскольку большинство наших компьютеров оснащены двумя мониторами, я позаботился о том, чтобы заставка работала на обоих дисплеях.

Это работает нормально, однако в некоторых системах, где основной экран был заменен (на левый монитор), заставка работает только на левом (основном) экране.

Код ошибки ниже. Кто-нибудь может увидеть что-то, что я сделал неправильно, или лучший способ справиться с этим?

Для информации, контекст "this" - это сама заставка.

// Make form full screen and on top of all other forms

int minY = 0;
int maxY = 0;
int maxX = 0;
int minX = 0;

foreach (Screen screen in Screen.AllScreens)
{
    // Find the bounds of all screens attached to the system

    if (screen.Bounds.Left < minX)
        minX = screen.Bounds.Left;

    if (screen.Bounds.Width > maxX)
        maxX = screen.Bounds.Width;

    if (screen.Bounds.Bottom < minY)
        minY = screen.Bounds.Bottom;

    if (screen.Bounds.Height > maxY)
        maxY = screen.Bounds.Height;
}

// Set the location and size of the form, so that it
// fills the bounds of all screens attached to the system

Location = new Point(minX, minY);
Height = maxY - minY;
Width = maxX - minX;
Cursor.Hide();
TopMost = true;

1 Ответ

3 голосов
/ 18 декабря 2009

Вы хотите проверить screen.Bounds.Right вместо screen.Bounds.Width.

Аналогично для высоты.

...