In WinForms
Ich verwende a Label
, um verschiedene Meldungen wie Erfolg, Misserfolg usw. anzuzeigen.
Ich möchte dieses Etikett in der Mittelform zentrieren. Ich möchte eine Lösung, die es zentriert, ob das Etikett nur ein Wort oder einen ganzen Satz enthält.
Control.Dock
Eigenschaft ( msdn.microsoft.com/en-us/library/… ) können Sie ein Steuerelement an eine bestimmte Seite des Containers andocken (kleben). Zum BeispielLeft
,Top
,Right
oderBottom
.Fill
Weist das Steuerelement an, den gesamten verfügbaren Speicherplatz im Container zu belegen.Dock
Einstellung ändern.Dock
Einstellung war unnötig. Durch Ändern derAutoSize
Eigenschaft erhält die Beschriftung einen Begrenzungsrahmen, dessen Größe Sie manuell anpassen können.Einige kleinere zusätzliche Inhalte zum programmgesteuerten Einstellen:
Die Ausrichtung von Dockstil und Inhalt kann von Ihren Anforderungen abweichen. Zum Beispiel verwende ich für eine einfache Beschriftung in einem wpf-Formular DockStyle.None.
quelle
Sie erreichen es mit der Einstellungseigenschaft Anchor: None.
quelle
Wenn Sie die Beschriftung nicht im gesamten verfügbaren Bereich andocken möchten, legen Sie einfach das SizeChanged-Ereignis anstelle von TextChanged fest. Durch Ändern jedes Buchstabens werden die width-Eigenschaft des Etiketts sowie sein Text geändert, wenn die automatische Größeneigenschaft auf True gesetzt wird. Übrigens können Sie jede Formel verwenden, um die Beschriftung in der Form zentriert zu halten.
quelle
Die akzeptierte Antwort hat bei mir aus zwei Gründen nicht funktioniert:
BackColor
so eingestelltAutoSize = false
undDock = Fill
bewirkt, dass die Hintergrundfarbe das gesamte Formular ausfülltAutoSize
sowieso nicht auf false setzen können, da mein Beschriftungstext dynamisch warStattdessen habe ich einfach die Breite des Formulars und die Breite des Etiketts verwendet, um den linken Versatz zu berechnen:
quelle
Ich wollte etwas Ähnliches tun, aber in einem Formular mit einem Hintergrundbild stellte ich fest, dass beim Ändern des Textes in der Beschriftung die Neulackierungen bei dieser Methode offensichtlich waren. Daher habe ich Folgendes getan: * Setzen Sie die Beschriftung AutoSize auf true und TextAlign auf MiddleCenter
Jedes Mal, wenn sich der Text änderte (meiner wurde mit einem Timer erstellt), rief ich die folgende Methode auf:
Setzen Sie die Location-Eigenschaft des Labels auf diesen Rückgabewert. Dies stellte sicher, dass sich die Beschriftung immer in der Mitte des Formulars befand, wenn sich der Text änderte und die Neulackierungen für ein Vollbildformular nicht offensichtlich waren.
quelle
Sie können das folgende Code-Snippet ausprobieren:
Es ist wirklich Zentrum
quelle