Skip to main content

TabControl

Namespace: System.Windows.Forms

Ein TabControl ist ein Container, der mehrere TabPage-Instanzen verwaltet und zwischen ihnen umschaltet.

Es stellt die Tabs (Reiter) dar und bestimmt, welche TabPage aktuell sichtbar ist.


Grundidee

Das TabControl ist die Steuerung, nicht der Inhalt.

    TabControl → verwaltet Tabs TabPage → enthält den eigentlichen Inhalt

    TabControl erstellen

    # Klassisch
    $tabControl = New-Object System.Windows.Forms.TabControl
    
    # .NET-Style
    $tabControl = [System.Windows.Forms.TabControl]::new()
    
    

    Tab hinzufügen / entfernen

    # Hinzufügen
    $tabControl.TabPages.Add($tabPage1)
    $tabControl.TabPages.Add("Mein Tab") # erstellt TabPage (nur Text)
    $tabControl.TabPages.Add("Name", "Text") # Name + Text
    $tabControl.TabPages.AddRange(@($tabPage2, $tabPage3))
    $tabControl.TabPages.Insert(0, $tabPage4)
    
    # Entfernen
    $tabControl.TabPages.Remove($tabPage1)
    $tabControl.TabPages.RemoveAt(0)
    $tabControl.TabPages.Clear()
    
    # technisch möglich, aber nicht empfohlen
    $tabControl.Controls.Add($tabPage4)
    $tabControl.Controls.AddRange(@($tabPage5, $tabPage6))
    $tabControl.Controls.Remove($tabPage2)
    $tabControl.Controls.RemoveRange(@($tabPage3, $tabPage4))
    
    

    Tab-Auswahl

    # Zugriff auf einzelnes TabPage
    $tabControl.TabPages[0]
    
    # Aktiven Tab setzen
    $tabControl.SelectedIndex = 0
    $tabControl.SelectedTab = $tabPage1
    
    

    Properties TabControl

    Properties Hidden
    • TabPages(leer)
      Sammlung aller enthaltenen TabPage-Instanzen
    • SelectedIndex – 0
      Index des aktuell aktiven Tabs (0-basiert)
    • SelectedTab$null
      Referenz auf die aktuell aktive TabPage
    • AlignmentTop
      Position der Tabs (Top, Bottom, Left, Right)
    • AppearanceNormal
      Darstellung der Tabs (Normal, Buttons, FlatButtons)
    • SizeModeNormal
      Größe der Tabs (Normal, Fixed)
    • ItemSize(Width=0, Height=0)
      Größe einzelner Tabs (nur relevant bei Fixed)
    • MultilineFalse
      Mehrere Reihen von Tabs erlauben
    • HotTrackFalse
      Hover-Effekt über Tabs
    • DockNone
      Layout innerhalb des Parent-Containers (meist Fill)
    • Anchor(Top, Left)
      Alternative Layoutsteuerung
    • Padding(6, 3)
      Abstand innerhalb der Tab-Headers
    • RowCount – 0
      Anzahl der Tab-Reihen (relevant bei Multiline)
    • DrawModeNormal
      Zeichenmodus (Normal, OwnerDrawFixed)
    • ShowToolTipsFalse
      Tooltips für Tabs aktivieren
    • ImageList$null
      Ermöglicht Icons in Tabs
    • SelectedImageIndex-1
      Index des Icons für den aktiven Tab

      Ein 

      TabPagesTabControl ist ein Container, der mehrere TabPage-Instanzen verwaltet und zwischen ihnen umschaltet.

      Es stellt die Tabs (leer)
      SammlungReiter) allerdar enthaltenenund bestimmt, welche TabPage-Instanzen

      SelectedIndex – 0
      Index des aktuell aktivensichtbar Tabsist. (0-basiert)

      Grundidee

      Das TabControl ist SelectedTab – $null
      Referenz auf die aktuellSteuerung, aktive TabPage

      Alignment – Top
      Positionnicht der TabsInhalt. (Top, Bottom, Left, Right)
      • AppearanceTabControl Normal
        Darstellung der Tabs (Normal, Buttons, FlatButtons)
      SizeMode – Normal
      Größe der Tabs (Normal, Fixed) ItemSize – (Width=0, Height=0)
      Größe einzelner Tabs (nur relevant bei Fixed) Multiline – False
      Mehrere Reihen von Tabs erlauben HotTrack – False
      Hover-Effekt überverwaltet Tabs DockTabPage None
      Layout innerhalb des Parent-Containers (meist Fill)
      Anchor – (Top, Left)
      Alternative Layoutsteuerung Padding – (6, 3)
      Abstand innerhalb der Tab-Headers RowCount – 0
      Anzahl der Tab-Reihen (relevant bei Multiline) DrawMode – Normal
      Zeichenmodus (Normal, OwnerDrawFixed) ShowToolTips – False
      Tooltips für Tabs aktivieren ImageList – $null
      Ermöglicht Icons in Tabs SelectedImageIndex – -1
      Index des Icons fürenthält den aktiveneigentlichen TabInhalt



      TabControl erstellen

      # Klassisch
      $tabControl = New-Object System.Windows.Forms.TabControl
      
      # .NET-Style
      $tabControl = [System.Windows.Forms.TabControl]::new()
      
      

      Tab hinzufügen / entfernen

      # Hinzufügen
      $tabControl.TabPages.Add($tabPage1)
      $tabControl.TabPages.Add("Mein Tab") # erstellt TabPage (nur Text)
      $tabControl.TabPages.Add("Name", "Text") # Name + Text
      $tabControl.TabPages.AddRange(@($tabPage2, $tabPage3))
      $tabControl.TabPages.Insert(0, $tabPage4)
      
      # Entfernen
      $tabControl.TabPages.Remove($tabPage1)
      $tabControl.TabPages.RemoveAt(0)
      $tabControl.TabPages.Clear()
      
      # technisch möglich, aber nicht empfohlen
      $tabControl.Controls.Add($tabPage4)
      $tabControl.Controls.AddRange(@($tabPage5, $tabPage6))
      $tabControl.Controls.Remove($tabPage2)
      $tabControl.Controls.RemoveRange(@($tabPage3, $tabPage4))
      
      

      Tab-Auswahl

      # Zugriff auf einzelnes TabPage
      $tabControl.TabPages[0]
      
      # Aktiven Tab setzen
      $tabControl.SelectedIndex = 0
      $tabControl.SelectedTab = $tabPage1
      
      

      Events TabControl

      $tabControl.Add_*
        param($sender, $e)
      • $sender → Das TabControl selbst (=$this)
      • $e (EventArgs) → Argumente Tab (TabPage) entsprechend


      Selecting / Selected

      Selecting
      Vor dem Wechsel zu einem Tab (TabPage) → kann noch abgebrochen werden

      • $e.TabPage → der Tab, zu dem gewechselt werden soll
      • $e.TabPageIndex → Index davon
      • $e.Cancel → kannst du auf $true setzen → Wechsel wird verhindert

      Selected
      Nach dem Wechsel zu einem Tab (TabPage)

      • $e.TabPage → der Tab, zu dem gewechselt wurde
      • $e.TabPageIndex → Index davon
      $tabControl.Add_Selecting({
          param($sender, $e)
      
          # Ziel-Tab
          $nextTab = $e.TabPage
      
          if ($nextTab.Name -eq "PackageTab") {
              Write-Host "Wechsel verhindert!"
      
              # 🚨 DAS ist der Trick:
              $e.Cancel = $true
          }
      })
      

      SelectedIndexChanged

      Beim Wechsel des Tabs (TabPages)

      • $e.TabPage → hier ist es $sender.SelectedTab
      • $sender.SelectedTab → der aktuell ausgewählte Tab
      $tabControl.Add_Selecting({
          param($sender, $e)
      
          # Ziel-Tab
          $nextTab = $e.TabPage
      
          if ($nextTab.Name -eq "PackageTab") {
              Write-Host "Wechsel verhindert!"
      
              # 🚨 DAS ist der Trick:
              $e.Cancel = $true
          }
      })
      

      Deselecting / Deselected

      Deselecting
      Vor dem Verlassen eines Tabs (TabPage) → kann noch abgebrochen werden

      $tabControl.Add_Deselecting({
          param($sender, $e)
      
          # Aktueller Tab (der verlassen wird)
          $currentTab = $e.TabPage
      
          # Beispiel: Verhindere Verlassen wenn noch Auswahl vorhanden
          if ($currentTab.Name -eq "PackageTab" -and $checkedListBox.CheckedItems.Count -gt 0) {
              Write-Host "Du hast noch Auswahl!"
      
              $e.Cancel = $true
          }
      })
      

      $e (EventArgs)
      $e.TabPage → der Tab, der verlassen wird
      $e.Cancel$true = Wechsel wird verhindert

      Deselected
      Nach dem Verlassen eines Tabs → ideal zum Zurücksetzen von UI

      $tabControl.Add_Deselected({
          param($sender, $e)
      
          # Verlassener Tab
          $oldTab = $e.TabPage
      
          if ($oldTab.Name -eq "PackageTab") {
      
              # CheckedListBox zurücksetzen
              for ($i = 0; $i -lt $checkedListBox.Items.Count; $i++) {
                  $checkedListBox.SetItemChecked($i, $false)
              }
      
              # ListBox zurücksetzen
              $listBox.ClearSelected()
          }
      })
      

      $e (EventArgs)
      $e.TabPage → der Tab, der verlassen wurde


      Click

      Klick auf das Control (selten relevant)


      ControlAdded / ControlRemoved

      Wenn TabPages hinzugefügt oder entfernt werden


      Tipps & Tricks - TabControl


      Typische Stolperfallen

      • Tab wird nicht angezeigt
        → nicht zur TabPages-Collection hinzugefügt
      • Events greifen nicht
        → falsches Event verwendet (Selecting vs. SelectedIndexChanged)
      • Layout wirkt falsch
        Dock / Anchor nicht sauber gesetzt
      • Icons fehlen
        ImageList nicht gesetzt oder falscher Index

      Mentales Modell

      Das TabControl ist ein Container mit Umschalter-Logik.

      Es zeigt genau eine TabPage gleichzeitig
      und verwaltet nur, welche sichtbar ist.


      Wann sinnvoll?

      • Strukturierung komplexer Inhalte
      • Einstellungen / Optionen
      • Platz sparen

      Wann vermeiden?

      • Häufiges Hin- und Herspringen notwendig
      • Linearer Workflow
      • Stark voneinander abhängige Inhalte