views:

473

answers:

3

The most obvious way to right-align a Label in WinForms doesn't work: setting anchor to Top/Bottom Right and TextAlign to TopRight. If the text changes the label's Left coordinate remains unchanged instead of the Right coordinate (which, one might argue, is a bug).

For this reason I've always used a full-width TableLayoutPanel for right-aligned labels. However this is not always very convenient, depending on the layout in question...

So, I wonder if there are any other ways to keep a Label right-aligned in WinForms that never occurred to me?

+1  A: 

One simple option is to disable AutoSize (set to false) and over-size it so there is spare space.

Alternatively, perhaps use Dock instead of just Anchor, although this has a different meaning, so you may need to put it in a Panel or similar). Ultimately this works like the first - by over-sizing it in the first place; so perhaps the first option is simpler.

Marc Gravell
Ah, yes, these can also be used depending on circumstances. I'm always a little worried that on other systems the text may not fit vertically since the first method disables vertical autosizing. Any comments regarding whether this is ever a problem?
romkyns
No huge thoughts; of course, WPF may have more flexibility ;-p
Marc Gravell
A: 

if you set the form property RightToLeft = yes; so you should not use the Text Align property just set the Anchor. try this approaches:

Form.righttoleft = yes;
label.anchor = Top, Right;
label.TextAlign = TopLeft;

or

Form.righttoleft = No;
label.anchor = Top, Right;
label.TextAlign = TopRight;

or

Form.righttoleft = yes;
label.righttoleft = No;
label.anchor = Top, Right;
label.TextAlign = TopRight;
Wael Dalloul
+3  A: 

Using a TableLayoutPanel with docked labels is the only reliable method that I've found for placing right-aligned labels in Winforms. Turning off AutoSize and using oversized labels seems to cause strange anomalies for High DPI users.

Damien