C# label AutoSize adds padding

柔情痞子 提交于 2019-12-19 17:33:13

问题


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.


回答1:


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

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:

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




回答2:


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;
        }
    }

}



来源:https://stackoverflow.com/questions/3629946/c-sharp-label-autosize-adds-padding

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!