2010-10-01 77 views
0

我有一個帶有一堆選項卡的表單,但我不希望它們都始終可見。 我試過操作選項卡控件

For Each t In TabControl1.TabPages 
     t.Hide() 
    Next 
    TabControl1.TabPages("DateRange").Show() 

爲了躲他們都在文檔加載,然後.Show()只是,我想在那個時候,但顯然不會按照這種方式,因爲所有標籤標籤仍然可見。

然後我試圖

Private tabs As TabControl.TabPageCollection 

    For Each t In TabControl1.TabPages 
     tabs.Add(t) ' Object reference not set to an instance of an object. ' 

     TabControl1.TabPages.Remove(t) 
    Next 
    TabControl1.TabPages.Add(tabs("DateRange")) 

但我得到一個標籤未設置爲一個對象的實例...而我得到的錯誤,如果我嘗試使用

tabs = New TabControl.TabPageCollection 

其沮喪的是。隱藏或可見的不要做他們應該做的事。

+0

看到 [這](http://www.devnewsgroups.net/windowsforms/t12906-how-hide-tabpage-tabcontrol.aspx)? – Beth 2010-10-01 15:31:18

回答

1

你是在正確的道路上,除了沒有

Private tabs As TabControl.TabPageCollection 

使用

Private tabs As New List(Of TabPage) 
+0

它看起來像這樣做。 – AndyD273 2010-10-01 16:58:47

1

,當一個項目被刪除您不能繞環路撤除指數移動繼續。

設置你的選項卡,然後或者通過索引或名稱中刪除逐一:

tabctrl.TabPages.RemoveAt(indx) 

For x = 0 To tabctrl.TabPages.Count - 1 
    If tabctrl.TabPages(x).Name.Equals(tabToRemove.Name) Then 
     tabctrl.TabPages.RemoveAt(x) 
     Exit For 
    End If 
Next 
+0

關閉,但向後。我希望他們全部隱藏,然後只顯示有效的。 – AndyD273 2010-10-01 16:59:03

+0

如果您知道刪除前哪些是有效的,只需通過名稱刪除無效的那些,您將不得不爲每個選項卡使用每個循環。 – HadleyHope 2010-10-04 08:39:57

+0

如果你想刪除它們,然後繼續調用tabctrl.TabPages.RemoveAt(0) – HadleyHope 2010-10-04 08:41:11

1

移動需要被隱藏到了一個列表的頁面是一個簡單的方法。但是,這種隱藏頁面在表單關閉時也需要處理。它不會自動了,因爲TabControl無法看到頁面。你不能忽視它,忘記處理控制是永久性的泄漏。使它看起來像這樣:

Public Class Form1 
    Private hiddenPages As New List(Of TabPage) 

    Friend Sub SetTabState(ByVal page As TabPage, ByVal visible As Boolean) 
     If visible Then 
      If TabControl1.TabPages.Contains(page) Then Exit Sub 
      hiddenPages.Remove(page) 
      TabControl1.TabPages.Add(page) 
     Else 
      If Not TabControl1.TabPages.Contains(page) Then Exit Sub 
      hiddenPages.Add(page) 
      TabControl1.TabPages.Remove(page) 
     End If 
    End Sub 

    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed 
     For Each page As TabPage In hiddenPages 
      page.Dispose() 
     Next 
    End Sub 
End Class 
+0

我想了解更多關於TabControl的這個問題。你有任何討論它的鏈接嗎? – 2010-10-01 16:30:29

+0

@Jay - 本地Windows控件不支持它。它可以做什麼在SDK文檔中描述,請從這裏開始閱讀:http://msdn.microsoft.com/en-us/library/ff486050%28VS.85%29.aspx – 2010-10-01 16:38:56