Beschreibung: Dieser Tipp zeigt, wie man zur Laufzeit Tabs zu einem TabControl hinzufügen und diese auch wieder entfernen kann.
Funktion:
Visual Basic: [code]
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.
' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!
' ##############################################################################
' ################################ MainForm.vb #################################
' ##############################################################################
Public Class MainForm
' Liste aller TabPages
Private tabPages As New List(Of TabPage)()
' Wenn Form lädt
Private Sub Form_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
' ListBox leeren
Me.TabsCheckedListBox.Items.Clear()
End Sub
' Wenn Hinzufügen-Butten gedrückt
Private Sub AddButton_Click(ByVal sender As Object, ByVal e As EventArgs)
' Fortlaufende Nummer
Static number As Integer = 1
' Neue TabPage hinzufügen
Me.tabPages.Add(New TabPage(number.ToString()))
' TabPage zu ListBox hinzufügen
Me.TabsCheckedListBox.Items.Add(number.ToString())
number += 1
End Sub
' Wenn der Entfernen-Button gedrückt wurde
Private Sub RemoveButton_Click(ByVal sender As Object, ByVal e As EventArgs)
' Wenn ein Tab in ListBox ausgewählt
If Me.TabsCheckedListBox.SelectedItem IsNot Nothing Then
Dim index As Integer = Me.TabsCheckedListBox.SelectedIndex
' Wenn die TabPage momentan angezeigt wird
If Me.TabControl.TabPages.Contains(Me.tabPages(index)) Then
' TabPage aus TabControl löschen
Me.TabControl.TabPages.RemoveAt( _
Me.TabControl.TabPages.IndexOf(Me.tabPages(index)))
End If
' Tab aus Liste entfernen
Me.tabPages.RemoveAt(Me.TabsCheckedListBox.SelectedIndex)
' Tab aus ListBox entfernen
Me.TabsCheckedListBox.Items.RemoveAt( _
Me.TabsCheckedListBox.SelectedIndex)
' Wenn an Stelle des entfernten Elementes ein anderes Element
' gerückt ist
If Me.TabsCheckedListBox.Items.Count > index Then
' Element markieren
Me.TabsCheckedListBox.SelectedIndex = index
Else
' Letztes Element markieren
Me.TabsCheckedListBox.SelectedIndex = _
Me.TabsCheckedListBox.Items.Count - 1
End If
End If
End Sub
' Wenn TabPage in ListBox aktiviert/deaktiviert
Private Sub TabsCheckedListBox_ItemCheck(ByVal sender As Object, _
ByVal e As ItemCheckEventArgs) Handles TabsCheckedListBox.ItemCheck
' Wenn TabPage aktiviert wurde
If e.NewValue = CheckState.Checked Then
' Ausgewählte TabPage zu TabControl hinzufügen
Me.TabControl.TabPages.Add( _
Me.tabPages(Me.TabsCheckedListBox.SelectedIndex))
' Wenn TabPage deaktiviert wurde
Else
' Ausgewählte TabPage entfernen
Me.TabControl.TabPages.Remove( _
Me.tabPages(Me.TabsCheckedListBox.SelectedIndex))
' Wichtig: Der Index aus der ListBox darf nicht direkt beim
' TabControl verwendet werden, da die Anzahl der dort angezeigten
' Tabs ja anders sein kann
End If
End Sub