C#标签自动调整大小会添加填充。

8

我有一个Windows.Form上的标签。我将AutoSize属性设置为True,发现这样做会在右侧填充约5像素的白色背景。我已经将Padding属性设置为[0, 0, 0, 0]。有没有办法消除这个问题?

我想尽可能地让标签的边界紧贴标签中的文本。

2个回答

14

如果只使用padding和margin是无法完全去除默认行为的。

alt text

在上图中,我将PaddingMargin都设置为[0,0,0,0]。那5个像素还在。

如果你设置FlatStyle = SystemAutoSize = False,就可以得到下面这个效果:

alt text

在上图中,你就不会再有那5个像素了。


关闭AutoSize属性将会把标签的尺寸设置为手动调整的大小。由于标签中的文本可能会变化,因此需要调整其大小。AutoSize属性会帮我实现这一点。如果有一种模拟此属性的方法,那也是可以接受的答案。 - MarkP
1
FlatStyle = System,太棒了,这个问题困扰我很久了,谢谢!+1 - Lee Richardson
你能提供一下获取第二个窗口的代码吗?我一直只得到第一个窗口。 - pteixeira
1
就我个人而言,这对我没有用,我一直得到第一个窗口。 - Garrett Smith
是的,FlatStyle=System确实关闭了“内部”填充 - 但是TextAlign属性现在完全被忽略了,无论在设置FlatStyle属性之前还是之后。 - PaulTheHacker

1

好的,所以FlastStyle = System; AutoSize = false; 然后设置一个属性来计算宽度,如下:

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

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接