Изменение происхождения пользовательского элемента управления ярлыка Windows Forms - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть пользовательский элемент управления, полученный из метки. Мне нужно изменить исходное местоположение элемента управления с верхнего левого угла до нижнего левого.

Есть ли метод или свойство для этого?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2010

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

0 голосов
/ 13 апреля 2010

Свойство 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 изменится (вам придется установить его снова).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...