我有一个从标签派生的自定义控件。 我需要将原生控件的位置原点从左上角更改为左下角。
是否有方法或财产可以做到这一点?
答案 0 :(得分:0)
TextAlign
属性应该满足您的需求。
label.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
如果您试图让Location
属性反映在控件的右下角而不是左上角,那么这是不可能的。但是,您可以创建自己的属性:
public Point BottomLeft
{
get { return new Point(Left, Bottom); }
set { Location = new Point(value.X, value.Y - Height); }
}
请记住,如果Height
属性发生更改(您必须再次设置),这将不会保持为真。
答案 1 :(得分:0)
如果您想更改Label.Location
属性的行为以使其引用标签的左下角,您可以覆盖自定义标签中的InitLayout()
:
class myLabel : Label
{
protected override void InitLayout()
{
base.InitLayout();
Location = new Point(Location.X, Location.Y - Height);
}
}
这将根据控件的高度向上移动控件。因此,如果您从(100,100)开始并且标签高度为13,那么您将以(100,87)结束,这将左下角置于(100,100)。
但这只会在标签添加到容器时发生。如果在将标签添加到容器后更改标签的位置,它将返回到右上角。
您可能尝试的另一件事是覆盖标签所在容器的LayoutEngine { get; }
,以便您可以完全控制如何解释放置在容器中的任何自定义标签的Location属性。