如何完全删除标签控件中的填充?
我试图将 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)