2012-04-22 50 views
0

我有一個非常簡單的問題。VB.NET:是否調用了form.show()?

我在窗體上調用.show().hide(),然後我想確定當前狀態。我一直在檢查.visible以確定該表單是否可見,但我偶然發現了一個問題。我的表單正在呈現在SplitContainer內部,每當我隱藏表單時我都會崩潰。所以,邏輯一旦我用.hide()隱藏表單,它就不再可見了,因爲我已經摺疊了它的容器,即使我打電話給.show(),它仍然不可見,因爲它的容器已關閉。

那麼,如何才能簡單地檢查是否已調用.show()而不是檢查窗體是否可見。

最終目標是顯示()/ hide()表單以及合攏/取消合攏容器。

在此先感謝!

P.S .:我知道我可以簡單地檢查容器並相應地顯示錶格,但是我的表單也支持從容器中分離,所以不會爲我工作。

回答

4

你不能在這裏採取捷徑。通過修改表單的TopLevel屬性,以便將其放在面板上,表單的Visible屬性不再是上次調用Show()或Hide()時的可靠指示。因爲閱讀財產只告訴用戶可以看到的形式。如果控件的Parent不可見,則控件的Visible屬性返回False,即使將其設置爲True。

解決方法很簡單,只需使用布爾變量來跟蹤。或者當你需要它在/可見時調用顯示和隱藏,當它已經可見時調用顯示,或者當它已經不可見時隱藏並不重要。