Как я могу определить, отображается ли моя форма за пределами экрана? - PullRequest
0 голосов
/ 09 апреля 2009

Итак, у меня есть две формы: mainform и extraform.
дополнительная форма всегда перемещается вправо от основной формы, когда основная форма инициализируется
Иногда mainform занимает оба монитора, и extraform выталкивается с экрана, чтобы его больше никогда не было видно. Я хотел бы предотвратить это, если это возможно. Как я могу это сделать? Он должен поддерживать двойные мониторы, которые могут иметь или не иметь расстояние между ними (то есть экран 1 имеет 20 пикселей слева от экрана 2).

Как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 09 апреля 2009

Вы можете использовать класс Screen, чтобы определить, где ваше окно относительно рабочего стола. Класс Screen имеет метод FromRectangle, так что вы можете выяснить, на каком экране вы должны располагать свою форму (передавая свойство Bounds вашей формы).

Каждый объект Screen имеет свойство Bounds, которое можно использовать для сравнения с местоположением и размером вашего окна и соответствующим образом их корректировать.

1 голос
/ 09 апреля 2009

Это зависит от того, что вы хотите, чтобы происходило, когда extraform выталкивается за пределы экрана (ов).

Однако, чтобы узнать, отталкивается ли он или нет, достаточно просто использовать класс System.Windows.Forms.Screens. Затем вы можете выполнить проверку границ следующим образом:

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

Код предполагает наличие формы. Обратите внимание, что этот код печатает только то, что экран содержит форму, если форма полностью содержится на экране. Но это должно быть довольно просто исправить, в зависимости от ваших потребностей.

0 голосов
/ 09 апреля 2009

Возможно, свойство DesktopLocation в ваших формах может дать вам представление о том, что происходит с тем, что происходит с ними

...