VB.NET-Tipp 0057: TabPages dynamisch hinzufügen/entfernen
von Elektrowolf
Beschreibung
Dieser Tipp zeigt, wie man zur Laufzeit Tabs zu einem TabControl hinzufügen und diese auch wieder entfernen kann.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2005, Visual Basic 2008 | Download: |
' 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! ' Projektversion: Visual Studio 2008 ' Option Strict: An ' Option Explicit: An ' Option Infer: An ' ' Referenzen: ' - System ' - System.Data ' - System.Deployment ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' - System.Core ' - System.Xml.Linq ' - System.Data.DataSetExtensions ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Collections.Generic ' - System.Data ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' - System.Linq ' - System.Xml.Linq ' ' ############################################################################## ' ################################ 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 End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.