WinForms:右对齐标签自动调整大小

时间:2010-10-21 14:01:12

标签: .net winforms label autosize

现在我澄清这可能是一个重复的问题:Right-aligned labels in WinForms 但是没有答案让我满意。

问题很简单:

我有一个右对齐标签,autosize设置为true。预期的行为是,当文本增加时,右坐标保持不变。但事实并非如此。左坐标是保持不变的坐标。

我的应用程序有点小,所以我不想开始将控件放到面板中等等。所以我尝试了所有仅涉及标签属性的解决方案。唯一有效的方法是将autosize设置为false并超出它的大小。 (N°1692383号问题的可接受解决方案)。但它真的很难看!我真的很想避免这种情况。

任何其他可行的解决方案??

提前致谢!

1 个答案:

答案 0 :(得分:7)

一种解决方案是在表单构造函数中捕获标签的右边距,并在标签SizeChanged事件中,根据初始右边距,标签的当前Width和标签重置位置家长的当前Width

这也假设标签固定在右侧以处理调整大小。

private readonly int _rightMargin;

public Form1()
{
    InitializeComponent();

    _rightMargin = label1.Parent.Width - label1.Right;
}

private void label1_SizeChanged(object sender, EventArgs e)
{
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top);
}