Как переместить элемент управления в центр экрана во время выполнения на С#?

98
7

Итак, у меня есть элемент управления (это ярлык) разного размера. Я хочу повторно размещать его в форме каждый раз, когда он изменяется (по горизонтали, а не по вертикали). Как это сделать программно?

спросил(а) 2021-01-25T13:31:37+03:00 4 месяца, 4 недели назад
1
Решение
124

YourLabel.Left = (YourForm.Width / 2) - (YourLabel.Width / 2);

Если вы хотите, чтобы это было отрегулировано каждый раз при изменении размеров формы, просто используйте событие Form.Resize.

ответил(а) 2021-01-25T13:31:37+03:00 4 месяца, 4 недели назад
98

Не требуется код: AutoSize = False, TextAlign = TopCenter. Сделайте его таким же большим, как вы позволите. Якорь справа не является обязательным.

ответил(а) 2021-01-25T13:31:37+03:00 4 месяца, 4 недели назад
64

Самый простой способ центрировать любой компонент. может быть полезно для кого-то. Щелкните правой кнопкой мыши Project → Add → Class


Обновите этот класс с помощью кода ниже.


public static class MyClass
{
public static void center(this Control component)
{
float compWidth = component.Width;
float parentWidth = component.Parent.Width;
float middled = (parentWidth / 2) - (compWidth / 2);

component.Left = Convert.ToInt32(middled);
}
}


а затем вы можете срезать любой компонент. вы можете использовать любой компонент, подобный этому


MyLabel.center();
MyPanel.center();

ответил(а) 2021-01-25T13:31:37+03:00 4 месяца, 4 недели назад
45

Хорошо, поэтому я стою исправлен - спасибо, ребята.


Вот обходной путь, чтобы сделать это без кода с использованием RAD (время разработки). Примечание. Я бы пошел с ответом @Shark, поскольку я не думаю, что это приведет к результату после, но вот оно:


    Отбросьте кнопку в форме


    Установите текст как текст в метке


    Кнопка размера, соответствующая тексту


    В свойствах кнопок "FlatStlye = Flat"


    В свойствах кнопок разверните "Плоский внешний вид" и установите размер рамки = 0


    Теперь установите привязку влево и вправо


ответил(а) 2021-01-25T13:31:37+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема