In meiner Entwicklungsarbeit mit Benutzeroberflächen in VBA stieß ich oft auf die Notwendigkeit, zu prüfen, ob ein bestimmter Tab (Reiter) in einem TabControl aktiv ist. Dies kann beispielsweise nötig sein, um auf Benutzerinteraktionen dynamisch zu reagieren oder spezifische Inhalte basierend auf der aktuellen Tab-Auswahl anzuzeigen. In meinem ursprünglichen Ansatz habe ich eine einfache Funktion erstellt, um diese Überprüfung durchzuführen. Jetzt möchte ich diesen Artikel erweitern, um weitere Methoden und Verbesserungen zu diskutieren.

Funktion zur Überprüfung der Auswahl eines Tabs

' Funktion, die überprüft, ob ein bestimmter Tab einer TabPage ausgewählt ist
Public Function IsSelectedTab(ByVal myTabPage As TabPage) As Boolean
' Ermittelt das übergeordnete TabControl des übergebenen TabPages
Dim myTabControl As TabControl = myTabPage.Parent
' Überprüft, ob der übergebene TabPage der aktuell ausgewählte Tab im TabControl ist
IsSelectedTab = (myTabControl.SelectedTab Is myTabPage)
End Function

Kurzbeschreibung des Codes:

  • Die Funktion IsSelectedTab nimmt ein TabPage-Objekt als Parameter und gibt einen booleschen Wert (True oder False) zurück.
  • Sie ermittelt zunächst das übergeordnete TabControl-Objekt des übergebenen TabPage mithilfe der Parent-Eigenschaft.
  • Dann überprüft die Funktion, ob das übergebene TabPage das aktuell ausgewählte Tab im TabControl ist.
  • Diese Methode ist hilfreich, um die Logik in einer Benutzeroberfläche anzupassen, je nachdem, welcher Tab aktuell aktiv ist.

Erweiterte Funktion: IsSelectedTab mit Tab-Index Rückgabe

Diese erweiterte Funktion gibt nicht nur zurück, ob der Tab ausgewählt ist, sondern auch den Index des ausgewählten Tabs im TabControl.

' Funktion, die überprüft, ob ein bestimmter Tab ausgewählt ist und gibt den Index des ausgewählten Tabs zurück
Public Function IsSelectedTab(ByVal myTabPage As TabPage, ByRef selectedIndex As Integer) As Boolean
Dim myTabControl As TabControl = myTabPage.Parent
selectedIndex = myTabControl.SelectedIndex ' Speichert den Index des aktuell ausgewählten Tabs
Return (myTabControl.SelectedTab Is myTabPage)
End Function

Verwendung des SelectedIndexChanged Ereignisses

Eine alternative Methode ist die Verwendung des SelectedIndexChanged Ereignisses des TabControl, um auf Änderungen in der Tab-Auswahl zu reagieren.

' Ereignishandler für das SelectedIndexChanged-Ereignis des TabControl
Private Sub TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
Dim myTabControl As TabControl = DirectCast(sender, TabControl)
If Not IsNothing(myTabControl.SelectedTab) AndAlso myTabControl.SelectedTab Is myTabPage Then
' Führe Aktionen aus, wenn der spezifische Tab ausgewählt ist
MessageBox.Show("Der spezielle Tab wurde ausgewählt. Index: " & myTabControl.SelectedIndex.ToString())
End If
End Sub