winforms 如何删除Label控件中的填充?

ljsrvy3e  于 2023-06-24  发布在  其他
关注(0)|答案(3)|浏览(163)

如何完全删除标签控件中的填充?
我尝试将Margin和Padding属性设置为零,但Label中的边距仍然很少。
我希望Windows窗体中的左右填充为零或非常小(小于“空格”字符宽度的一半)。
我需要这个标签放置在非常接近其他,但当我把标签非常接近-标签的背景放在顶部涵盖其他标签文本。我在一个标签上使用右对齐,在另一个标签上使用左对齐,它看起来像这样:

不管AutoSize属性是什么,我都有这个问题。控件右侧总是有太多的填充。
在WPF中,它可以按照我的意愿工作,但我必须使用Windows窗体。
我不能使用TextBox控件(它可以按照我的要求工作),因为它不支持透明背景。

5ktev3wc

5ktev3wc1#

尝试将UseCompatibleTextRendering属性设置为true

7kjnsjlb

7kjnsjlb2#

如果你自己绘制文本,你可以完全删除填充。下面是一个简单的自定义标签控件(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);
    }
}
nxowjjhe

nxowjjhe3#

我使用Canvas布局来解决这个问题:

<Canvas>
   <Label Canvas.Left="35" Canvas.Top="0" Content="Latitude:" HorizontalAlignment="Right" Foreground="red"/>
   <Label Canvas.Left="90" Canvas.Top="0" Content="nn.nnnnnn" Foreground="red" />
   <Label Canvas.Left="25" Canvas.Top="12"  Content="Longitude:" HorizontalAlignment="Right" Foreground="red"/>
   <Label Canvas.Left="90" Canvas.Top="12"  Content="nn.nnnnnn" Foreground="red" />
   <Label Canvas.Left="40" Canvas.Top="26"  Content="Date" HorizontalAlignment="Center" Foreground="Blue"/>
   <Label Canvas.Left="100" Canvas.Top="26"  Content="Time" HorizontalAlignment="Center" Foreground="Blue"/>
</Canvas>

相关问题