Как проверить абсолютную видимость контроля и как получать уведомления об изменениях абсолютной видимости - PullRequest
2 голосов
/ 26 ноября 2009

У меня есть несколько элементов управления внутри формы, и я выполняю несколько изменений (Text, Font, BackColor и т. Д.) Для этих элементов управления. Мои изменения необходимы, только если элементы управления видны. Итак, я хочу прекратить вносить изменения в элементы управления, которые не отображаются. Я хочу продолжать менять свои элементы управления, когда они снова станут видимыми.

Я могу использовать Control.Visible и Control.VisibleChanged, однако они не подходят для моей цели.

Проблема в том, что VisibleChanged не запускается, когда элемент управления становится невидимым из-за его родителя (то есть, потому что его родитель становится невидимым). Интересно, что он срабатывает, когда управление снова становится видимым.

  1. Есть ли способ получить уведомление об изменениях видимости без рекурсивного прослушивания изменений видимости родителей?

  2. Я также хочу получать уведомления, когда поверх моей формы помещается другая форма и некоторые из моих элементов управления становятся невидимыми. Я называю это абсолютной видимостью. (Есть ли другой термин для этого?) Есть ли событие, которое я могу использовать для этой цели?

Спасибо.

1 Ответ

0 голосов
/ 26 ноября 2009

Вы можете настроить таймер, который проверяет состояние свойства .Visible в элементе управления и запускает событие, когда оно изменяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...