如何删除标签控件中的填充?

Kam*_*mil 5 .net winforms

如何完全删除标签控件中的填充?

我试图将 Margin 和 Padding 属性设置为零,但标签内的边距像素仍然很少。

我希望 Windows 窗体中的左右填充为零或非常小(小于“空格”字符宽度的一半)。

对于与其他标签非常接近的标签,我需要使用它,但是当我将标签非常接近时 - 放置在顶部的标签背景会覆盖其他标签文本。我在一个标签上使用右对齐,在另一个标签上使用左对齐,它看起来像这样:

填充

无论 AutoSize 属性如何,我都有这个问题。控件右侧总是有太多填充。

在 WPF 中,它可以按我的意愿工作,但我必须使用 Windows 窗体。

我不能使用 TextBox 控件(它可以随心所欲地工作),因为它不支持透明背景。

小智 1

如果您自己绘制文本,则可以完全删除填充。这是一个简单的自定义标签控件(RightAlignment属性改变文本对齐方式)

public partial class NoPaddingLabel : Label
{
    private TextFormatFlags flags = TextFormatFlags.SingleLine | TextFormatFlags.VerticalCenter | TextFormatFlags.Left | TextFormatFlags.NoPadding;

    public bool RightAlignment
    {
        get
        {
            return (flags & TextFormatFlags.Right) == TextFormatFlags.Right;
        }
        set
        {
            if (value)
            {
                flags = flags |= TextFormatFlags.Right;
            }
            else
            {
                flags = flags &= ~TextFormatFlags.Right;
            }
            Invalidate();
        }
    }

    public NoPaddingLabel()
    {
        InitializeComponent();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        TextRenderer.DrawText(e.Graphics, this.Text, this.Font, ClientRectangle, this.ForeColor, Color.Transparent, flags);
    }
}
Run Code Online (Sandbox Code Playgroud)