Label
Ein Label ist ein Steuerelement zur reinesAnzeige Anzeige-Controlvon Text und optionalen Bildern.
Im Text.EsGegensatz zu interaktiven Controls wie Button oder TextBox dient zurein Beschreibung,Label Anzeigehauptsächlich dazu, Informationen, Beschriftungen oder StrukturierungHinweise voninnerhalb UI-Inhalten.einer Benutzeroberfläche darzustellen.
Ein Label ist nicht für direkte Benutzerinteraktion vorgesehen, kann jedoch auch auf EreignisseMausereignisse wiereagieren Mausklicksund reagieren.beispielsweise über das Click-Event als anklickbares Element verwendet werden.
Grundlagen
Ein Label wird hauptsächlich verwendet, um Informationen innerhalb eines Formulars darzustellen.
Label → zeigt Informationen oder Beschriftungen an
Button → führt eine Aktion aus
TextBox → ermöglicht Texteingaben
Label erstellen
# Klassisch
$label = New-Object System.Windows.Forms.Label
# .NET-Style
$label = [System.Windows.Forms.Label]::new()
Eigenschaften
Label
hinzufügen
Ein
Label Controls-Collection seines Parent-Containers hinzugefügt.
$form.Controls.Add($label)
# oder
Erläuterung$tabPage.Controls.Add($label)
der EigenschaftText
festlegenDer sichtbare Inhalt eines Labels wird über die Eigenschaft Text –festgelegt.
$label.Text = "Benutzername:"
Angezeigter
Eigenschaften
AutoEllipsis
Zeigt bei nicht vollständig darstellbarem Text automatisch ... an.
AutoSize
Passt die Größe des Labels automatisch an
BackColor
Legt die Hintergrundfarbe des Labels fest.
BorderStyle
Bestimmt, ob und wie ein Rahmen um das Label dargestellt wird.
Cursor
Legt den Mauszeiger fest, wenn sich der Mauszeiger über dem Label befindet.
Dock
Dockt das Label an einer Seite seines Parent-Containers an.
Enabled
Legt fest, ob das Label aktiviert dargestellt wird und auf Eingaben reagieren kann.
FlatStyle
Bestimmt die Darstellungsart des Labels.
Font
Legt Schriftart, -größe und -stil fest.
ForeColor
Legt die Textfarbe fest.
Image
Zeigt ein Bild im Label an.
ImageAlign
Bestimmt die Position des Bildes innerhalb des Labels.
ImageIndex
Wählt ein Bild anhand seines Indexes aus der ImageList aus.
ImageKey
Wählt ein Bild anhand seines Namens aus der ImageList aus.
ImageList
Legt die Bildersammlung für das Label fest.
Location
Bestimmt die Position des Labels im Parent-Container.
Margin
Legt den äußeren Abstand zu benachbarten Controls fest.
MaximumSize
Definiert die maximal zulässige Größe.
MinimumSize
Definiert die minimal zulässige Größe.
Name
Legt den internen Namen des Labels fest.
Padding
Legt den Innenabstand zwischen Rand und Inhalt fest.
Size
Bestimmt Breite und Höhe des Labels.
TabIndex
Legt die Reihenfolge der Tabulator-Navigation fest.
TabStop
Legt fest, ob das Label per Tabulator fokussiert werden kann.
Text
Bestimmt den sichtbaren Text des Labels.
TextAlign
UseCompatibleTextRendering
Bestimmt, ob für die Textdarstellung die ältere GDI+- oder die neuere GDI-Textdarstellung verwendet wird.
UseMnemonic
Aktiviert Tastenkombinationen über & im Text.
Visible
Legt fest, ob das Label sichtbar ist.
AutoEllipsis
AutoEllipsis
BorderStyleTyp –= NoneRahmenstil des Labels
Dock – NoneLayout innerhalb des Parent-Containers
Anchor – (Top, Left)Verhalten bei Größenänderung des Containers
Padding – (0, 0, 0, 0)Innenabstand
Margin – (3, 3, 3, 3)Außenabstand
UseMnemonic – $trueAktiviert Zugriff über Alt+Key (z.B. &Datei)[System.Boolean]
Der
geerbtWert von ControlAutoEllipsis
... gekürzt werden soll, wenn dieser nicht vollständig dargestellt werden kann.
WidthStandardmäßig –ist 100Breitediese desEigenschaft Labelsauf False gesetzt.
$label.AutoEllipsis = $true
💡
dann sinnvoll, wennHeightHinweis–AutoEllipsis23HöheistdesinsbesondereLabels
Sizedie–(Width=100, Height=23)
Größe des Labels begrenzt ist und der vollständige Text nicht angezeigt werden kann.
AutoSize
AutoSize
LocationTyp –= (0,[System.Boolean]
Der innerhalbWert von AutoSize legt fest, ob sich die Größe des ContainersLabels automatisch an dessen Inhalt anpasst.
Beim
Label ist AutoSize standardmäßig auf True gesetzt.
ForeColorDadurch –wird SystemColors.ControlTextTextfarbedie (systemabhängig)Größe automatisch anhand des enthaltenen Textes beziehungsweise Bildes bestimmt.
$label.AutoSize = $true
BackColor – TransparentHintergrundfarbe (übernimmt Parent-Hintergrund)
Font – Microsoft Sans Serif, 8.25ptStandard-Systemschrift
Enabled – $trueAktiviertSoll das Label eine feste Größe besitzen, kann AutoSize deaktiviert werden.
$label.AutoSize = $false
$label.Size = "200, 40"
BackColor
BackColor
VisibleTyp –= $trueSichtbarkeit[System.Drawing.Color]
Der Wert von BackColor legt die Hintergrundfarbe des Labels fest.
$label.BackColor = "LightBlue"
Standardmäßig übernimmt das Label die Hintergrundfarbe seines Parent-Controls beziehungsweise die von Windows vorgegebene Standardfarbe.
BorderStyle
BorderStyle
Typ = [System.Windows.Forms.BorderStyle]
Der Wert von BorderStyle bestimmt, ob und wie ein Rahmen um das Label dargestellt wird.
Folgende Werte stehen zur Verfügung:
Standardmäßig besitzt diese Eigenschaft den Wert None.
$label.BorderStyle = "FixedSingle"
Cursor
Cursor
TabIndexTyp –= 0Reihenfolge beim Durchtabben[System.Windows.Forms.Cursor]
Der
Wert vonCursor legt fest, welcher Mauszeiger angezeigt wird, wenn sich der Mauszeiger über dem Label befindet.
$label.Cursor = [System.Windows.Forms.Cursors]::Hand
Dies kann beispielsweise verwendet werden, wenn das Label wie ein anklickbarer Link verwendet wird.
Dock
Dock
TabStopTyp = [System.Windows.Forms.DockStyle]
Der Wert von Dock legt fest, an welcher Seite seines Parent-Containers das Label angedockt wird.
Standardmäßig besitzt diese Eigenschaft den Wert None.
$label.Dock = "Top"
Alternativ kann das Label mit Fill den gesamten verfügbaren Bereich einnehmen.
$label.Dock = "Fill"
Im Gegensatz zu Anchor übernimmt Dock sowohl die Positionierung als auch die Größenanpassung des Controls.
Enabled
Enabled–
Typ = [System.Boolean]
Der Wert von Enabled legt fest, ob das Label aktiviert ist.
Standardmäßig besitzt diese Eigenschaft den Wert True.
Wird Enabled auf False gesetzt, wird das Label deaktiviert dargestellt und reagiert nicht mehr auf Eingaben.
$label.Enabled = $false
💡 Hinweis Bei einem gewöhnlichen Label betrifft
Enabledhauptsächlich die Darstellung. Ein Label ist standardmäßig ohnehin nichtperüberTabdieerreichbarTabulator-Navigation fokussierbar.
FlatStyle
FlatStyle
Typ = [System.Windows.Forms.FlatStyle]
Der Wert von FlatStyle bestimmt die Darstellungsart des Labels.
Folgende Werte stehen zur Verfügung:
→ flache Darstellung mit Hervorhebung bei Interaktion
Windows
$label.FlatStyle = "Flat"
Text
Font
Font
Typ:Typ = [System.Drawing.Font]
Der Wert von Font legt die Schriftart fest, mit der der Text des Labels dargestellt wird.
Änderungen an dieser Eigenschaft beeinflussen Schriftart, Schriftgröße und Schriftstil.
$label.Font = [System.Drawing.Font]::new(
"Segoe UI",
10,
"Bold"
)
ForeColor
ForeColor
Typ = [System.Drawing.Color]
Der Wert von ForeColor legt die Farbe fest, mit der der Text des Labels dargestellt wird.
$label.ForeColor = "White"
Image
Image
Typ = [System.Drawing.Image]
Der Wert von Image legt das Bild fest, das im Label angezeigt werden soll.
$label.Image = [System.Drawing.Image]::FromFile(
"C:\Icons\Info.png"
)
Ist gleichzeitig Text vorhanden, bestimmt TextAlign beziehungsweise ImageAlign, wie die Inhalte innerhalb des Labels positioniert werden.
ImageAlign
ImageAlign
Typ = [System.Drawing.ContentAlignment]
Der Wert von ImageAlign legt fest, an welcher Position das Bild innerhalb des Labels dargestellt wird.
$label.ImageAlign = "MiddleCenter"
ImageIndex
ImageIndex
Typ = [System.Int32]
Der Wert von ImageIndex bestimmt den Index des Bildes innerhalb der zugewiesenen ImageList.
Standardmäßig ist kein Bild ausgewählt.
$label.ImageList = $imageList
$label.ImageIndex = 0
💡 Hinweis
undsystem.StringImageIndexImageKeydienen demselben Zweck. Es sollte immer nur eine der beiden Eigenschaften verwendet werden.
ImageKey
ImageKey
Typ = [System.String]
Der Wert von ImageKey legt den Namen eines Bildes innerhalb der zugewiesenen ImageList fest.
$label.ImageList = $imageList
$label.ImageKey = "Info"
Im Gegensatz zu ImageIndex erfolgt die Auswahl über den Namen des Bildes.
ImageList
ImageList
Typ = [System.Windows.Forms.ImageList]
Der Wert von ImageList legt die Bildersammlung fest, aus der das Label ein Bild beziehen kann.
Welche Grafik verwendet wird, wird anschließend über ImageIndex oder ImageKey bestimmt.
$label.ImageList = $imageList
$label.ImageIndex = 0
Location
Location
Typ = [System.Drawing.Point]
Der Wert von Location legt die Position des Labels innerhalb seines Parent-Containers fest.
Die Position wird über die X- und Y-Koordinate relativ zum Parent-Control angegeben.
$label.Location = "20, 40"
💡 Hinweis Wird das Label durch einen Layout-Container oder
Dockpositioniert, wirdLocationvom Layoutsystem verwaltet.
Margin
Margin
Typ = [System.Windows.Forms.Padding]
Der Wert von Margin legt den äußeren Abstand des Labels zu benachbarten Controls fest.
Die Eigenschaft wird insbesondere von Layout-Containern wie FlowLayoutPanel oder TableLayoutPanel berücksichtigt.
$label.Margin = [System.Windows.Forms.Padding]::new(10)
MaximumSize
TextMaximumSize
Typ = [System.Drawing.Size]
Der Wert von MaximumSize legt die maximal zulässige Größe des Labels fest.
Standardmäßig besitzt diese Eigenschaft den Wert (0,0). Dadurch existiert keine Größenbegrenzung.
$label.MaximumSize = "300, 100"
MinimumSize
MinimumSize
Typ = [System.Drawing.Size]
Der Wert von MinimumSize legt die minimal zulässige Größe des Labels fest.
$label.MinimumSize = "100, 25"
Name
Name
Typ = [System.String]
Der Wert von Name legt den angezeigteninternen Namen des Labels fest.
Der Name dient ausschließlich der Identifikation innerhalb des Programms und wird dem Benutzer nicht angezeigt.
$label.Name = "lblUsername"
Padding
Padding
Typ = [System.Windows.Forms.Padding]
Der Wert von Padding legt den Innenabstand zwischen dem Rand des Labels und dessen Inhalt einesfest.
$label.Padding = [System.Windows.Forms.Padding]::new(8)
Size
Size
Typ = [System.Drawing.Size]
Der Wert von Size legt die Breite und Höhe des Labels fest.
$label.Size = "200, 35"
Ist AutoSize aktiviert, kann die Größe automatisch anhand des Inhalts angepasst werden.
TabIndex
TabIndex
Typ = [System.Int32]
Der Wert von TabIndex legt die Reihenfolge fest, in der das Label den Fokus erhält, wenn der Benutzer die Tabulator-Taste betätigt.
Standardmäßig besitzt ein Label einen TabIndex, obwohl es normalerweise nicht über die Tabulator-Navigation fokussiert werden kann.
$label.TabIndex = 2
💡 Hinweis
TabIndexwird beim Label erst relevant, wennTabStopaufTruegesetzt wird.
TabStop
TabStop
Typ = [System.Boolean]
Der Wert von TabStop legt fest, ob das Label über die Tabulator-Taste den Fokus erhalten kann.
Beim Label ist diese Eigenschaft standardmäßig auf False gesetzt.
$label.TabStop = $true
Dadurch kann das Label Teil der Tabulator-Navigation werden.
💡 Hinweis Ein gewöhnliches Label ist kein interaktives Eingabeelement. Deshalb ist
TabStopstandardmäßig deaktiviert.
Text
Text
Typ = [System.String]
Der Wert von Text legt den sichtbaren Text des Labels fest.
$label.Text = "HalloBenutzername:"
Welt"
# Mehrzeilig
$label.Text = "Zeile 1`nZeile 2"
PowerShellStandardmäßig machtbesitzt implizitediese Konvertierung:Eigenschaft den Wert "" (leerer String).
TextAlign
TextAlign
Typ = [System.Drawing.ContentAlignment]
Der Wert von TextAlign legt fest, an welcher Position der Text innerhalb des Labels dargestellt wird.
$Label.Text = 123funktioniert, weil es intern zu "123" wird.
AutoSize
Typ: System.Boolean
Die Eigenschaft AutoSize bestimmt, ob sich das Label automatisch an die Größe seines Inhalts anpasst.
# Automatische Größe
$label.AutoSize = $trueSize
Typ: System.Drawing.Size
# Feste Größe
$label.Size = [System.Drawing.Size]::new(200, 30)TextAlign
Typ: System.Drawing.ContentAlignment
# Text zentrieren
$label.TextAlign = "MiddleCenter"
Dadurch
Eventswird -der Label
Text sowohl horizontal als auch vertikal zentriert.
EventsUseCompatibleTextRendering
UseCompatibleTextRendering
EvenTyp = [System.Boolean]
Der Wert von UseCompatibleTextRendering bestimmt, welche Textdarstellung für das Label verwendet wird.
Bei False wird die neuere GDI-basierte Textdarstellung verwendet. Bei True wird die ältere GDI+-basierte Darstellung verwendet.
$label.UseCompatibleTextRendering = $true
Die Eigenschaft ist hauptsächlich für Kompatibilität mit älteren Anwendungen relevant.
💡 Hinweis
In den meisten Fällen kann der Standardwert verwendet werden. Die Eigenschaft wird insbesondere dann interessant, wenn Unterschiede bei der Textdarstellung, beispielsweise bei Zeilenumbruch oder Schriftmessung, auftreten.
UseMnemonic
UseMnemonic
Typ = [System.Boolean]
Der Wert von UseMnemonic legt fest, ob das Zeichen & im Text zur Definition eines Tastaturkürzels verwendet wird.
Ist die Eigenschaft aktiviert, wird das Zeichen direkt vor einem Buchstaben als Kennzeichnung für eine Mnemonic-Taste interpretiert.
$label.Text = "&Name:"
$label.UseMnemonic = $true
Das N kann dadurch als Zugriffstaste verwendet werden.
Soll das Zeichen & tatsächlich angezeigt werden, kann es durch && maskiert werden.
$label.Text = "Speichern && Beenden"
Visible
Visible
Typ = [System.Boolean]
Der Wert von Visible legt fest, ob das Label sichtbar ist.
Standardmäßig besitzt diese Eigenschaft den Wert True.
$label.Visible = $false
Wird ausgelöst,die ...Eigenschaft auf False gesetzt, wird das Label ausgeblendet.
Interaktion (User Input)
Events
Click...Ein Label kann auf verschiedene Ereignisse reagieren. Besonders häufig werden Mausereignisse verwendet, wenn das Label mitwie derein Mausanklickbares angeklicktElement wirdeingesetzt wird.
Event Beschreibung
Click
Das Label wurde angeklickt.
DoubleClick
...
MouseEnter
Der Mauszeiger befindet sich über dem Label.
MouseLeave
Der Mauszeiger verlässt das MouseDown
MouseEnter... wenn der Mauszeiger das Label betritt
MouseLeave... wenn der Mauszeiger das Label verlässt
MouseMove... wenn der Mauszeiger innerhalb des Labels bewegt wird
MouseDown... wenn eine
MouseUp
MouseUp... wenn eine
TextChanged
MouseHover... wenn der Mauszeiger für kurze Zeit auf dem Label verweilt
Zustand / Inhalt
EnabledChanged...
VisibleChanged
VisibleChanged... wenn sich die
Layout
EnabledChanged
Der LocationChanged... wenn sich die PositionAktivierungszustand des Labels ändert
FontChanged
Die Schriftart des Labels wurde geändert.
ForeColorChanged
Die Textfarbe des Labels wurde geändert.
SizeChanged
...wenn sich dieDie Größe des Labels ändertwurde geändert.
Darstellung
Event
Aussehen
FontChanged...Events wennwerden sichbeim dieLabel Schriftartmit desdem LabelsPräfix ändertAdd_ hinzugefügt.
ForeColorChanged... wenn sich die Textfarbe des Labels ändert
BackColorChanged... wenn sich die Hintergrundfarbe des Labels ändert
$label.Add_*
param($sender, $e)$sender$this$eInteraktionen (User Input)
Click / DoubleClick / MouseDown
# Click
$label.Add_Click({
param($sender, $e)
Write-Host "Auf das Label wurde geklickt"
})
# DoubleClick
$label.Add_DoubleClick({
param($sender, $e)
Write-Host "Auf das Label wurde doppelt geklickt"
])
# MouseDown
$label.Add_MouseDown({
param($sender, $e)
Write-Host "Auf das Label wurde entweder mit links oder rechts geklickt"
})MouseEnter / MouseLeave
Mit MouseEnter und MouseLeave sind Hover-Effekte möglich
$label.Add_MouseEnter({
$this.ForeColor = "Red"
})
$label.Add_MouseLeave({
$this.ForeColor = "Black"
})MouseMove
Mausbewegung innerhalb vom Label
$label.Add_MouseMove({
param($sender, $e)
})TextChanged
TextChanged
Wird ausgelöst, wenn sich der Text ändert
$label.Add_TextChanged({
param($sender, $e)
Write-Host "Neuer Text: $($sender.Text)geklickt."
})
Event entfernen
Ein zuvor hinzugefügtes Event kann über das entsprechende Remove_-Präfix wieder entfernt werden.
$label.Remove_Click($event)
Tipps
Label Tricks
automatisch Typische Stolperfallen
Mit AutoSize vergessenkann oder Size zu klein
$label.AutoSize =ForeColorBackColor$true
Mentales
Typische Modell
Verwendung
Ein Label istwird UI-Dekohäufig mitfür Bedeutung.folgende Aufgaben verwendet:
Es erklärt dem Benutzer, was andere Controls tun oder zeigt Status an.
Wann sinnvoll?
BeschriftungBeschriftungen von EingabefeldernStatusanzeigenÜberschriftenÜberschriftenStatusinformationen
Ein typisches Formular kann beispielsweise so aufgebaut sein:
$label = [System.Windows.Forms.Label]::new()
$label.Text = "Benutzername:"
$label.AutoSize = $true
$label.Location = "20, 20"
$form.Controls.Add($label)
Wann
Label vermeiden?
als klickbares Element
Obwohl ein Label hauptsächlich zur Darstellung von Informationen dient, kann es auf Mausereignisse reagieren.
Dadurch kann es beispielsweise als einfacher Link oder als Schaltfläche für kleinere Aktionen verwendet werden.
$label.Text = "Über das Programm"
$label.Cursor = [System.Windows.Forms.Cursors]::Hand
$label.Add_Click({
Show-About
})
Für komplexere Aktionen sollte jedoch weiterhin ein Button verwendet werden.
💡 Hinweis Ein
Labelbesitzt zwar einClick-Event, ist aber semantisch kein Button. Bei wichtigen oder häufig verwendeten Aktionen ist einButtondaher die bessere Wahl.
Hinweise
WennLabelInteraktiondienterwartethauptsächlich zur Darstellung von Informationen.
AutoSize ist beim Label standardmäßig aktiviert.
TabStop ist beim Label standardmäßig deaktiviert.
TabIndex ist vorhanden, wird TabStop aktiviert wird.
Image, ImageList, ImageIndex und ImageKey können Bilder angezeigt werden.
Mit TextAlign kann der Text innerhalb des Labels positioniert werden.
Über Click kann ein Label interaktiv gemacht werden.
Für echte Benutzeraktionen sollte in der Regel ein Button verwendet werden.
Eine kleine Korrektur gegenüber meiner vorherigen Antwort ist →dabei andereswichtig: Control**`TabIndex` prüfenund `TabStop` sind beim `Label` tatsächlich vorhanden, aber `TabStop` steht standardmäßig auf `False`**. Das ist für deine Doku die relevante Information, statt so zu tun, als wäre die bloße Existenz der beiden Properties schon praktisch bedeutungsvoll. WinForms liebt solche geerbten Eigenschaften. :contentReference[oaicite:1]{index=1}