将标签居中放置在任何形式的VB.NET上

将标签居中放置在任何形式的VB.NET上,vb.net,width,measure,text-rendering,Vb.net,Width,Measure,Text Rendering,我需要显示一个标签居中的表单(根据表单的宽度和标签的文本、宽度、字体系列和字体大小)。到目前为止,这是我的尝试: (Me.Width - TextRenderer.MeasureText("Hello word", New Font("Delius", 10, FontStyle.Regular).Width) / 2 无论我怎么尝试,标签都不会像它应该的那样居中显示(标签的左侧和右侧看起来大小不一样) 无论使用哪种字体,是否还有其他方法测量文本?谢谢。将标签的Autosize属性设置为Fa

我需要显示一个标签居中的表单(根据表单的宽度和标签的文本、宽度、字体系列和字体大小)。到目前为止,这是我的尝试:

(Me.Width - TextRenderer.MeasureText("Hello word", New Font("Delius", 10, 
FontStyle.Regular).Width) / 2
无论我怎么尝试,标签都不会像它应该的那样居中显示(标签的左侧和右侧看起来大小不一样)


无论使用哪种字体,是否还有其他方法测量文本?谢谢。

将标签的
Autosize
属性设置为False,然后
停靠标签顶部、底部或填充,或者将其拖动到表单的全宽,并将
锚定设置为左侧和右侧。然后将
TextAlign
设置为MiddleCenter

Anchor
属性非常漂亮,因为它基本上将控件的边框固定到窗体的相应一侧。
因此,在我们的例子中,控件的左侧粘在窗体的左侧,右侧粘在窗体的右侧。
因此,如果窗体被调整大小,它将拖动控件的左右两侧。与
TextAlign
一起,这将始终保持文本居中。
要使其工作,需要禁用标签的
自动调整大小
功能

另一种方法是保持
自动调整大小
处于启用状态,将窗体置于控件中央,然后禁用左侧和右侧
锚定
。这也将保持标签居中,因为它现在不再粘在任何一侧,而是保持其相对位置

所以:让控件为您完成工作


这里有一个更专业的解决方案:

水平定心:

 myLabel.Left = (myLabel.Parent.Width \2) - (myLabel.Width \2)
myLabel.Top = (myLabel.Parent.Height \ 2) - (myLabel.Height \ 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()
方法之前,或者在控件附加到父控件之前,不要添加代码行。

该等式不会提供任何已知它与窗体边缘等距的信息。您需要将标签中心点放置在Form1.Width/2处。现在它已正确居中!非常感谢。不客气。我还补充了一些解释。