Как сохранить метку в центре WinForms? - PullRequest
125 голосов
/ 03 декабря 2010

В WinForms Я использую Label для отображения различных сообщений, таких как успех, неудача и т. Д.

Я бы хотел расположить эту метку по центру.Мне нужно решение, которое бы держало его в центре, будь то одно слово или целое предложение на этикетке.

Ответы [ 5 ]

240 голосов
/ 03 декабря 2010

Установите Label 's AutoSize свойство в False, TextAlign свойство в MiddleCenter и Dock свойство в Fill.

13 голосов
/ 03 июня 2014

Вы достигнете этого, установив свойство Anchor: Нет.

12 голосов
/ 23 июля 2014

Некоторый дополнительный дополнительный контент для настройки программно:

Label textLabel = new Label() { 
        AutoSize = false, 
        TextAlign = ContentAlignment.MiddleCenter, 
        Dock = DockStyle.None, 
        Left = 10, 
        Width = myDialog.Width - 10
};            

Выравнивание Dockstyle и Content может отличаться от ваших потребностейНапример, для простой метки в форме wpf я использую DockStyle.None.

8 голосов
/ 12 мая 2015

Если вы не хотите закреплять метку во всей доступной области, просто установите событие SizeChanged вместо TextChanged. Изменение каждой буквы приведет к изменению свойства ширины метки и ее текста, если для свойства autosize установлено значение True. Так, кстати, вы можете использовать любую формулу, чтобы держать ярлык по центру формы.

private void lblReport_SizeChanged(object sender, EventArgs e)
{
    lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
0 голосов
/ 30 января 2019

Я хотел сделать что-то похожее, но в форме с фоновым изображением я обнаружил, что при изменении текста в метке перерисовки были очевидны при использовании этого метода, поэтому я сделал следующее: * Установите для метки AutoSize значение trueи TextAlign to MiddleCenter

Затем, каждый раз, когда текст изменялся (мой был сделан с использованием таймера), я вызывал следующий метод:

    private Point GetPosition()
    {
        int y = (this.Height / 2) - (label1.Height / 2);
        int x = (this.Width / 2) - (label1.Width / 2);
        return new Point(x, y);
    }

И устанавливал свойство Location метки на это возвращаемое значение,Это гарантировало, что метка всегда была в центре формы, когда текст изменялся, и перерисовки для полноэкранной формы были неочевидны.

...