2012-01-29 45 views
3

我在這裏看到了關於如何隱藏tabcontrol中的標籤的一些討論,但它們似乎都是C或某種變體。我沒有看到一個vb.net(我不能做C)VB.Net Hide Tabpage

我想要做的是隱藏或禁用所有的標籤,直到用戶登錄。 我整理了登錄和註銷。我需要做的就是添加代碼來啓用/禁用一些標籤,直到用戶登錄。

任何人都知道一個很好的方法來做到這一點?

的WinForms BTW

回答

9

整個TabControl的您剛剛從TabControl的通過TabPages集合添加和刪除TabPages

TabControl1.TabPages.Add(myTabPage) 

,並刪除它:

TabControl1.TabPages.Remove(myTabPage) 

注意:刪除TabPage不會對其進行處理,它只會將其從TabPage集合中刪除。

+0

doesnt該方法鬆開所有的選項卡上的控件,但? – 2012-01-29 18:58:59

+0

測試 - 沒有鬆散的控制 - 謝謝你larstech – 2012-01-29 19:01:19

+1

@ user977229號。「TabPage」將仍然擁有所有的控件和事件,直到它被處置。 – LarsTech 2012-01-29 19:02:25

0

只是隱藏通過設置Visible財產

+0

對不起 - 忘記提及登錄是第一個標籤。我知道它是一個混亂的方式來做到這一點,我可能會改變它,但編號也想學習如何做到這一點爲任何未來的項目 – 2012-01-29 18:52:54

0

當前,以下代碼塊會禁用該TabPage上的所有控件(設置Control.Enabled = False)。該選項卡本身仍然可見並且可以從TabControl中選擇,它不會被隱藏。該選項卡是可選的,並且所有元素都顯示爲禁用。

TabMyTab.Enabled = False 

如果您希望禁用類似,即button.Enabled = False標籤不允許使用的控制,你需要做的事情是禁用的TabPage在代碼中的不同上述禁止在該選項卡中的所有控件。如果這是你想要的,請繼續閱讀。許多程序員建議使用TabControl禁止通過選擇不同的或先前選擇的選項卡來選擇選項卡。這是我知道的最有效的方法。我想實現如下這樣:

Private PreviousTab As New TabPage 
Private CurrentTab As New TabPage 

Private Sub TabControlName_Deselected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControlName.Deselected 
     PreviousTab = e.TabPage 
End Sub 

Private Sub TabControlName_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControlName.Selected 
     CurrentTab = e.TabPage 
     If (PreviousTab.Name <> CurrentTab.Name) And (CurrentTab.Name = UnselectableTab.Name) Then 
      MessageBox.Show("Tab disabled.", "Selection Error", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
      TabControlName.SelectedTab = PreviousTab 
     End If 
End Sub 

爲替「UnselectableTab」和「TabControlName」爲您的項目自己的值。