2012-04-22 5 views
0

У меня очень простой вопрос.VB.NET: вызван ли form.show()?

Я звоню .show() и .hide() на форме, а затем я хочу определить текущее состояние. Я проверял .visible, чтобы определить, видна ли форма, но я наткнулся на проблему. Моя форма создается внутри SplitContainer, который я рушился каждый раз, когда я скрываю форму. Таким образом, по логике, когда я скрою форму с .hide(), она больше не видна, и поскольку я рухнул ее контейнер, даже если я вызову .show(), он все равно НЕ будет видимым, потому что контейнер закрыт.

Итак, как я могу просто проверить, было ли вызвано .show(), а не проверка формы.

Конечная цель состоит в том, чтобы показать()/hide() форму вместе с свертыванием/разворачиванием контейнера.

Заранее благодарен!

P.S .: Я знаю, что я мог бы просто проверить контейнер и показать форму соответственно, но моя форма также поддерживает отсоединение от контейнера, так что не будет работать для меня.

ответ

4

Вы не можете воспользоваться ярлыком здесь. Поправив свойство TopLevel формы, чтобы вы могли поместить его на панель, свойство Visible формы больше не является надежным показателем того, вы последний раз вызывали Show() или Hide(). Потому что чтение свойства говорит только если пользователь может видеть форму. Если родительский элемент управления не отображается, свойство Visible элемента управления возвращает False, даже если вы установили его в True.

Обходной путь прост, просто используйте булевскую переменную для отслеживания. Или просто вызовите «Показать» и «Скрыть», когда вам нужно, чтобы он был/виден, вызывать «Показать», когда он уже виден, или «Скрыть», когда он уже невидим, не имеет значения.

Смежные вопросы