Laden...

Padding im Label ohne Wirkung

Erstellt von morphious vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.632 Views
M
morphious Themenstarter:in
72 Beiträge seit 2006
vor 15 Jahren
Padding im Label ohne Wirkung

Hallo,

ich konnte nirgends finden, dass man einem Label kein Padding geben kann, aber in meinem Windows Form wird das in den Properties eingestellte Padding nicht angenommen, also z.B. padding left 20 oder padding left 0 macht keinen Unterschied.

Weiß jemand Rat?

Danke.

  • VS 2008 standard C# auf winXP pro
1.002 Beiträge seit 2007
vor 15 Jahren

Hallo morphious,

hast du die Eigenschaft AutoSize gesetzt?
Kann es gerade nicht testen, es kann aber sein, dass dann das Padding ignoriert wird.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

M
morphious Themenstarter:in
72 Beiträge seit 2006
vor 15 Jahren

Danke für die schnelle Antwort, aber AutoSize steht auf False ...

946 Beiträge seit 2008
vor 15 Jahren

Schau mal in der :rtfm: MSDN nach unter bspw. bei der Control.Padding-Eigenschaft.

 Alle Steuerelemente, die GetPreferredSize implementieren, werden um den in Padding angegebenen Wert vergrößert, wenn AutoSize auf true festgelegt ist.

Danke für die schnelle Antwort, aber AutoSize steht auf False ...

Wo der Fehler liegt, kannst du dir dann denken.

mfg
SeeQuark

M
morphious Themenstarter:in
72 Beiträge seit 2006
vor 15 Jahren

@ SeeQuark: Danke, aber da tauchten zwei Probleme auf:

  • meine labels brauchen eine fixe Breite mit Rahmen
  • selbst mit AutoSize = True funktioniert es nicht, da das linke padding rechts neben die Schrift gesetzt wird und das rechte padding auch rechts am Rand angewendet wird, was dann also bei padding 20;0;20;0 ein padding von 40 ab dem rechten Rand ergibt

Hat man noch eine andere Möglichkeiten, die Schrift im label bei Linksanschlag ein paar Pixel vom Rand weg zu bekommen? Außer natürlich die labels ohne Hintergrund erstellen und ein farbiges panel drunter legen ...

Danke, Gruß

946 Beiträge seit 2008
vor 15 Jahren

das linke [wird] padding rechts neben die Schrift gesetzt und das rechte padding [wird] auch rechts am Rand angewendet, was dann also bei padding 20;0;20;0 ein padding von 40 ab dem rechten Rand ergibt

Das ist irgendwie unlogisch.
Bei mir funktioniert das so wie es soll, dass das Label links und rechts je einen Rand von 20 hat.
Vielleicht hast du diese Werte irgendwo manipuliert oder es ist ein Bug eingeschlichen, was ich aber nicht glaube.


Hat man noch eine andere Möglichkeiten, die Schrift im label bei Linksanschlag ein paar Pixel vom Rand weg zu bekommen?

Einen Width-Wert zuweisen und TextAlign auf

MiddleCenter

setzen.

Ich fände das mit dem Padding aber besser.


Probiere mal diesen Code aus:

Form testForm = new Form();
Label label = new Label();
label.BackColor = SystemColors.Highlight;
label.BorderStyle = BorderStyle.FixedSingle;
label.Padding = new Padding(20, 0, 20, 0);
label.AutoSize = true;
label.Text = "TestLabel";
testForm.SizeChanged += (s, e) => label.Location = new Point(
    (testForm.ClientSize.Width - label.Size.Width) / 2,
    (testForm.ClientSize.Height - label.Size.Height) / 2);
testForm.Controls.Add(label);
testForm.Show();
testForm.Size = new Size(100, 100);

Sollte es da nicht funktionieren, ist das irgend ein Bug.
Wenn schon, hast du einen Fehler im Code.

mfg
SeeQuark

M
morphious Themenstarter:in
72 Beiträge seit 2006
vor 15 Jahren

Danke für deine Tipps. Jetzt habe ich es heraus gefunden: Es lag einfach nur daran, dass der "Flat Style" auf "System" und nicht auf "Standard" stand.