Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# label AutoSize adds padding

I have a Label on a Windows.Form. I set the AutoSize property on the label to True and I noticed that when I do that, it pads the right hand side with ~5px of white background. I have the Padding property set to [0, 0, 0, 0]. Is there a way to get rid of this?

I would like to get the bounds of the label as close as possible to the text within the label.

like image 291
MarkP Avatar asked Sep 02 '10 18:09

MarkP


2 Answers

There's no way when you use only padding and margin. That's the default behavior.

alt text

In the above Window I've set the Padding and Margin to [0,0,0,0]. Those 5 pixels are still there.

If you set FlatStyle = System and AutoSize = False you can get this:

alt text

In the above Window you don't have those 5 pixels anymore.

like image 199
Leniel Maccaferri Avatar answered Nov 13 '22 12:11

Leniel Maccaferri


Ok, so FlastStyle = System; AutoSize = false; and then set up a property that will calculate the width like this:

public string LabelText
{
    set
    {
        _label.Text = value;
        using (Graphics g = CreateGraphics()) {
            _label.Width = (int)g.MeasureString(_label.Text, _label.Font).Width;
        }
    }

}

like image 21
Lee Richardson Avatar answered Nov 13 '22 11:11

Lee Richardson