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

Die*_*ego 5 .net label autosize winforms

现在我澄清这可能是一个重复的问题:WinForms中的右对齐标签 但是没有答案让我满意.

问题很简单:

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

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

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

提前致谢!

Jef*_*ata 7

一种解决方案是在表单构造函数中捕获标签的右边距,并在标签SizeChanged事件中,根据初始右边距,标签的当前值Width和标签Parent的当前值重置位置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);
}
Run Code Online (Sandbox Code Playgroud)