6

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

问题很简单:

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

我的应用程序有点小,所以我不想开始将控件放入面板等。所以我尝试了所有只涉及标签属性的解决方案。唯一有效的方法是将 autosize 设置为 false 并将其过大。(接受问题 Nº1692383 的解决方案)。但是真的很丑!我真的很想避免这种情况。

还有其他可能的解决方案吗?

4

1 回答 1

8

一种解决方案是在表单构造函数中捕获标签的右边距,并在标签SizeChanged事件中,根据初始右边距、标签的 currentWidth和标签 Parent 的 current重置位置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);
}
于 2010-10-21T14:24:17.550 回答