Как я могу определить, отображается ли моя форма за пределами экрана?

StackOverflow https://stackoverflow.com/questions/731903

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top