Определение формы Windows на мониторе? - PullRequest
1 голос
/ 14 апреля 2019

Я боролся с этим в течение некоторого времени. У меня есть приложение Windows формы, где позиция окна сохраняется при закрытии. Затем эту форму можно открыть при следующем запуске приложения. Он будет работать на нескольких мониторах, пока монитор включен. Однако иногда люди запускают программное обеспечение на компьютере, и при следующем запуске оно не имеет второго монитора или монитор выключен. При запуске программного обеспечения форма не отображается. Теперь есть ряд примеров, которые должны исправить это, но ни один из них не работает! Все они используют функцию Screens.AllScreens. Проблема в том, что эта функция вернет, что два экрана доступны, даже если один выключен. Вот пример из сообщения stackoverflow 10 лет назад.

    public bool IsOnScreen( Form form )
    {
        Screen[] screens = Screen.AllScreens;
        foreach( Screen screen in screens )
        {
             Point formTopLeft = new Point( form.Left, form.Top );

             if( screen.WorkingArea.Contains( formTopLeft ) )
             {
                return true;
             }
         }

         return false;
    }

У кого-нибудь есть рабочие примеры? Спасибо

...