Visual Basic Label Text zentrieren?

4 Antworten

Setz AuotSize auf false bei den Labels und setz die Breite gleich wie das Form. TextPosition dann MiddleCenter.

Noch besser als die Breite so festzulegen ist natürlich du setzt die Dock Eigenschaft damit sich die Labels mit dem Form verbreitern.


PWolff  24.05.2016, 13:41

"Dock" beeinflusst andere Elemente ziemlich stark, meistens ist "Anchor" (Left,Top,Right) geeigneter.

0
EightSix  24.05.2016, 15:21
@PWolff

Die Lösung mit Anchor ist natürlich in dem Fall noch einfacher.

0

An deiner Stelle würde ich eher Textboxen benutzen, da diese sich nicht automatisch verschieben und du diese auch besser einstellen kannst. Du musst sie nur auf Readonly stellen

Antwort1.ReadOnly = True

Antwort2.ReadOnly = True

Antwort3.ReadOnly = True

Antwort4.ReadOnly = True

Statt Antwort1,Antwort2 etc musst du die Namen deiner Textboxen Eintragen Viel Glück noch bei deinem Quiz!


EightSix  24.05.2016, 12:41

Was kann man an Textboxen besser konfigurieren? Man muss halt das AutoSize bei den Labels deaktivieren damit man sie in der Größe anpassen kann.

0
vb1337  24.05.2016, 11:40

Falls du noch Hilfe bei dem Zufälligen Antwort auswählen brauchst sags mir

0
leoquestiongoon 
Beitragsersteller
 24.05.2016, 11:47
@vb1337

Danke, mein Problem bei den Textboxen ist aber, dass ich diesen vertikalen Strich nicht wegkriege, der steht dann trotzdem noch da, auch wenn man nichts eingeben kann. Außerdem wie geht dass, das sich die Schriftgröße an die Länge der Frage anpasst?

Geht das denn wirklich nicht mit Labels?

0

Ich würde statt Labels Buttons nehmen, da sieht man sofort, dass man das anklicken kann.

Außerdem kann man die Buttons dann auch mit der Tastatur betätigen - Richtungspfeile und Leertaste/Zeilenschaltung, oder AntwortLabel(...).Text = ...

&a) Antwort 1
&b) Zweite Antwort
&c) Antwortalternative drei
&d) Viertens

und Alt+a, ..., Alt+d

Die Buttons bekommen die AutoSize-Eigenschaft auf True gesetzt, und die AutoSizeMode-Eigenschaft auf GrowAndShrink, oder die Anchor-Eigenschaft auf Top,Left,Right, und breit genug für die breiteste Frage gezogen (kann man auch programmgesteuert machen). Ggf. noch mit Mehrzeiligkeit und WordWrap spielen. (Funktioniert auch bei Labels)

Nach

Button.Text = ...
Button.Left = (Me.ClientSize.Width - Button.Width) \ 2

oder auch

Button.Left = CInt((Me.ClientSize.Width - Button.Width) / 2)

("\" steht für Integer-Division; nur der ganzzahlige Quotient wird zurückgeliefert und der Rest ausgelassen)

(Übrigens hat VB6 noch respektiert, wenn ein Label die Alignment-Eigenschaft auf "2 - Zentriert" gesetzt war)

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Soll denn der "Anwender" selber schreiben können oder dass der Text schon darin steht? 


leoquestiongoon 
Beitragsersteller
 24.05.2016, 11:37

Ich habe einen Datenbank da stehen zum Beispiel Antwortmöglichkeiten und Fragen drin. Zum Beispiel einmal als Frage

"Wie heißt die Haupstadt Russland" und als Antworten "Moskau", "St. Petersburg" "Sochi" "Minsk". 

Und dann soll halt zum Beispiel diese Frage ins Label für die Frage rein, wichtig ist aber dass auch eine andere Frage dran muss. 

Ich hatte die Idee, dass man die Position des Labels festsetzt mit 

X Position = X PositionMittedesLabels - Breite des Labels / 2. 

Aber woher kennt er denn die Breite des Labels, wenn diese aufgrund des variablen Inhalts auch variable ist. 

0
PWolff  24.05.2016, 14:03
@leoquestiongoon

Aber woher kennt er denn die Breite des Labels

Die Eigenschaft Label.Size.Width (oder abgekürzt Label.Width) gibt immer den aktuellen Wert zurück.

0