Центрируйте метку в любой форме VB.NET
Мне нужно показать форму с центрированной меткой (в соответствии с шириной формы и текстом метки, шириной, семейством шрифтов и размером шрифта). До сих пор это была моя попытка:
(Me.Width - TextRenderer.MeasureText("Hello word", New Font("Delius", 10,
FontStyle.Regular).Width) / 2
Независимо от того, сколько я стараюсь, ярлык не отображается по центру, как это должно быть (левая и правая стороны ярлыка не выглядят одинакового размера).
Есть ли другой способ измерения текста независимо от того, какой шрифт используется? Спасибо.
2 ответа
Установить Autosize
свойство вашего ярлыка в False, то либо Dock
метка Top, Bottom или Fill, или перетащите его на всю ширину формы и установите Anchor
как слева, так и справа. Затем установите TextAlign
в MiddleCenter.
Anchor
свойство довольно изящно, потому что оно в основном прикрепляет границу элемента управления к соответствующей стороне формы.
Таким образом, в нашем случае левая сторона элемента управления прилипает к левой стороне формы, а правая часть - к правой стороне формы.
Таким образом, если размер формы изменяется, он перетаскивает левую и правую часть элемента управления вместе с ним. Вместе с TextAlign
, это всегда держит текст по центру.
Чтобы это работало, AutoSize
Функциональность ярлыка должна быть отключена.
Альтернативным способом было бы сохранить AutoSize
включен, центр формы на элементе управления, а затем отключите как левый и правый Anchor
, Это также будет держать метку по центру, так как теперь она больше не прилипает ни к одной из сторон, а сохраняет свое относительное положение.
Итак: пусть контроль сделает всю работу за вас.
Вот более профессиональное решение:
горизонтальное центрирование:
myLabel.Left = (myLabel.Parent.Width \2) - (myLabel.Width \2)
вертикальное центрирование:
myLabel.Top = (myLabel.Parent.Height \ 2) - (myLabel.Height \ 2)
добавить этот код на myLabel.[SizeChanged][1]
Обработчик событий, а также его родитель SizeChanged
Обработчик события
ps не добавляйте кодовую строку перед InitializeComponent()
Метод вызывается или до того, как элемент управления будет присоединен к родительскому элементу управления.