我需要显示一个带有居中标签的表单(根据表单的宽度和标签的文字,宽度,字体系列和字体大小)。到目前为止,这是我的尝试:
(Me.Width - TextRenderer.MeasureText("Hello word", New Font("Delius", 10,
FontStyle.Regular).Width) / 2
无论我尝试多少,标签都不会显得居中(标签的左侧和右侧看起来大小不同)。
无论使用哪种字体,还有其他方法可以测量文字吗?谢谢。
答案 0 :(得分:14)
将标签的Autosize
属性设置为False,然后将Dock
设置为标签顶部,底部或填充,或将其拖动到表单的整个宽度并将Anchor
设置为左右两边。然后将TextAlign
设置为MiddleCenter。
Anchor
属性非常漂亮,因为它基本上将控件的边框固定到表单的相应边。
所以在我们的例子中,控件的左侧贴在窗体的左侧,右侧贴在窗体的右侧。
因此,如果调整窗体大小,它会使用它拖动控件的左侧和右侧。与TextAlign
一起,这始终使文本居中
为此,需要禁用标签的AutoSize
功能。
另一种方法是启用AutoSize
,将表单置于控件中心,然后禁用左右Anchor
。这样可以使标签保持居中,因为它现在不再粘在任何一侧,而是保持其相对位置。
所以:让控件为你完成工作。
答案 1 :(得分:2)
这是一个更专业的解决方案:
横向居中:
myLabel.Left = (myLabel.Parent.Width \2) - (myLabel.Width \2)
垂直居中:
myLabel.Top = (myLabel.Parent.Height \ 2) - (myLabel.Height \ 2)
在myLabel.[SizeChanged][1]
事件处理程序及其父SizeChanged
事件处理程序
P.S。在调用InitializeComponent()
方法之前或控件附加到父控件之前,不要添加代码行。