TableLayoutPanel
1. Grid-Struktur
Ein TableLayoutPanel ist im Kern ein Container, der seine enthaltenen Controls in einem dynamischesRaster Rasteraus Zeilen und Spalten aus:anordnet.
Im Gegensatz zu einem normalen Panel werden Controls nicht über ihre Location positioniert, sondern einer bestimmten Zelle des Rasters zugewiesen.
Grundlagen
Das TableLayoutPanel übernimmt die komplette Positionierung seiner enthaltenen Controls.
- jede
Zelle kann genau ein oder mehrere Controls enthaltenRowCount - Zeilen
und Spalten besitzen eigene GrößenregelnColumnCount - Controls
können mehrere Zeilen oder Spalten belegenRowStyles - Änderungen
der Fenstergröße werden automatisch berücksichtigtColumnStyles
DieDadurch Styleseignet bestimmensich das Control besonders für responsive Layouts.
TableLayoutPanel erstellen
# Klassisch
$tableLayout = New-Object System.Windows.Forms.TableLayoutPanel
# .NET-Style
$tableLayout = [System.Windows.Forms.TableLayoutPanel]::new()
Controls hinzufügen
Controls werden wie bei jedem Container über Controls hinzugefügt.
$tableLayout.Controls.Add($button)
Soll ein Control in eine bestimmte Zelle eingefügt werden:
$tableLayout.Controls.Add($button, 1, 0)
Dabei gilt:
Spalte = 1
Zeile = 0
Zugriff auf Controls
$tableLayout.Controls[0]
Position eines Controls ermitteln:
$tableLayout.GetRow($button)
$tableLayout.GetColumn($button)
Position ändern:
$tableLayout.SetRow($button, 2)
$tableLayout.SetColumn($button, 1)
Eigenschaften
<details> <summary>Eigenschaften</summary>
</details>
ColumnCount [System.Int32]
Legt fest, wie viele Spalten das Raster besitzt.
Standardmäßig besitzt ein TableLayoutPanel eine Spalte.
$tableLayout.ColumnCount = 3
RowCount [System.Int32]
Legt fest, wie viele Zeilen vorhanden sind.
$tableLayout.RowCount = 4
ColumnStyles [TableLayoutColumnStyleCollection]
Enthält die Größenregeln aller Spalten.
Jede Spalte besitzt einen ColumnStyle.
$tableLayout.ColumnStyles.Add(
[System.Windows.Forms.ColumnStyle]::new(
[System.Windows.Forms.SizeType]::Percent,
50
)
)
Typische Größen:
Absolute
Percent
AutoSize
RowStyles [TableLayoutRowStyleCollection]
Entspricht ColumnStyles, jedoch für Zeilen.
GrowStyle [TableLayoutPanelGrowStyle]
Bestimmt, wie sich das Raster verhält, wenn mehr Controls hinzugefügt werden als Zellen vorhanden sind.
AddRows
AddColumns
FixedSize
Standard:
AddRows
CellBorderStyle [TableLayoutPanelCellBorderStyle]
Legt fest, ob Zellrahmen dargestellt werden.
Praktisch zum Debuggen von Layouts.
Methoden
<details> <summary>Methoden</summary>
</details>
GetControlFromPosition()
Datentyp: [System.Windows.Forms.Control]
$tableLayout.GetControlFromPosition(
Column,
Row
)
Gibt das Control zurück, das sich in der Platzangegebenen verteiltZelle befindet.
GetPositionFromControl()
Datentyp: [System.Windows.Forms.TableLayoutPanelCellPosition]
$tableLayout.GetPositionFromControl(
$button
)
Liefert Zeile und Spalte eines Controls.
GetColumn()
$tableLayout.GetColumn($button)
Liefert die Spalte eines Controls.
GetRow()
$tableLayout.GetRow($button)
Liefert die Zeile eines Controls.
SetColumn()
$tableLayout.SetColumn(
$button,
2
)
Verschiebt das Control in eine andere Spalte.
SetRow()
$tableLayout.SetRow(
$button,
1
)
Verschiebt das Control in eine andere Zeile.
SetColumnSpan()
$tableLayout.SetColumnSpan(
$button,
2
)
Das Control erstreckt sich über mehrere Spalten.
SetRowSpan()
$tableLayout.SetRowSpan(
$button,
2
)
Das Control erstreckt sich über mehrere Zeilen.
Events
<details> <summary>Events</summary>
</details>
$tableLayout.Add_*
param($sender, $e)
Layout
Wird ausgelöst, wenn das TableLayoutPanel seine enthaltenen Controls neu anordnet.
Dies geschieht beispielsweise nach:
RowStyles
Änderungen an ColumnStyles
Hinzufügen oder Entfernen von Controls
ControlAdded / ControlRemoved
Werden ausgelöst, wenn Controls hinzugefügt oder entfernt werden.
Tipps & Tricks
Typische Stolperfallen
→ Das
TableLayoutPanel positioniert Controls selbst.
Controls erscheinen nicht → Zeilen- oder Spaltenindex falsch. Controls werden gestreckt
→
Dock oder Anchor überprüfen.
Prozentwerte ergeben kein erwartetes Layout→
ColumnStyles bzw. RowStyles kontrollieren.
Zu wenige Zellen →
GrowStyle oder RowCount/ColumnCount anpassen.
Mentales Modell
Das TableLayoutPanel ist eine Tabelle für Controls.
Du platzierst ein Control nicht über Pixelkoordinaten, sondern sagst lediglich:
Dieses Control gehört in Spalte X, Zeile Y.
Den Rest übernimmt das Layout-System automatisch.