Re: Как отследить что форма не перекрыта другими окнами - C#
От: Mr.Delphist  
Дата: 30.11.15 15:29
Оценка:
Здравствуйте, Zoldan, Вы писали:

Z>Доброго времени суток!

Z>Есть форма, нужно отследить момент когда эту форму не перекрывают другие окна, т.е когда пользователь ее видит целиком. Что, можно с этим сделать??
Z>Приложение не WPF, обычный C#.

Не особый спец по WinForms, но учитывая, что оно построено поверх Win32 API, схема примерно такая (псевдокодом на Win32 API):
r1 = GetTopWindow()
r2 = GetWindowRect()
rect = IntersectRect(r1, r2) // если rect пуст, то пересечения окон нет


Соответственно, сравнение надо повторить для всех окон, у которых Z-order "ближе" нашего, через EnumWindows(). По реализации — надо лишь найти WinForms-обёртки этих API-функций для шарпа.

P.S. А кейс, когда Ваше приложение открыто через Remote Desktop, и окно этого RD перекрыто каким-то другим местным окном, надеюсь, не рассматриваете?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.