2011-01-13 69 views
4

我在Windows窗體中有一個選項卡控件。除了下面的例子,它工作得很好。當我選擇tabpage2時,tabpage1上的所有控件都將其visible屬性返回爲FALSE,因爲它們都設置爲visible = false,所以它們實際上是不真實的。不可見的tabpage(選項卡控件)上的控件返回Visible = false

我想這是因爲tabpage1設置爲visible = false所以所有的子控件繼承FALSE。

當然,如果選擇了tabpage1,則所有控件都會返回正確的visible屬性值。

必須有解決辦法。有沒有人有辦法解決嗎?

+1

爲什麼你想要一個解決方法呢?這些控件在其父標籤頁不可見時不可見。這是和其他窗口相同的規則。也許如果你告訴我們你試圖完成什麼,我們可以提出其他解決方案。 – 2011-01-13 16:52:09

+0

如果控件的「visible」屬性設置爲false,那麼當檢查該屬性時它自然會返回false。我誤讀了嗎? – JYelton 2011-01-13 16:53:03

+0

當然...它的一個標籤控件有幾個tabpages ..每個tabpages有一些控件在那裏..我需要檢查一個ALERT面板,我有可見..如果它然後我失敗了驗證程序我運行...但我檢查警報面板的可見屬性,當tabpage2打開,並在其tabpage1 ...如果這是有道理的 – Martin 2011-01-13 16:54:17

回答

1

由於面板的Visible屬性的行爲不符合您的期望,請嘗試將面板的Tag屬性設置爲某種或某些其他屬性,然後使用該屬性確定是否驗證失敗。

0

製作一個小項目,以確認這一點,如果你檢查當前選擇,它會返回false 選項卡頁面上的任何控制的Visible財產,因爲控制是可見。

如果您試圖確定用戶當前正在查看哪個標籤頁,最好檢查TabControl的SelectedTabSelectedIndex屬性。

11

Visible屬性有點特別,它的getter不會返回分配的值。它告訴你,如果控制是實際上可見。如果將它放在未選中的標籤頁上,則不是。這是設計。

不支持獲取實際的「打算可見」狀態。你會從GetState(2)中獲得它,但這是一種內部方法。如果你真的絕望,那麼你可以使用反射。但正確的方法是自己跟蹤它。