现在我澄清这可能是一个重复的问题:Right-aligned labels in WinForms 但是没有答案让我满意。
问题很简单:
我有一个右对齐标签,autosize设置为true。预期的行为是,当文本增加时,右坐标保持不变。但事实并非如此。左坐标是保持不变的坐标。
我的应用程序有点小,所以我不想开始将控件放到面板中等等。所以我尝试了所有仅涉及标签属性的解决方案。唯一有效的方法是将autosize设置为false并超出它的大小。 (N°1692383号问题的可接受解决方案)。但它真的很难看!我真的很想避免这种情况。
任何其他可行的解决方案??
提前致谢!
答案 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);
}