Если вы хотите изменить поведение свойства 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 любой пользовательской метки, помещенной в контейнер.