Answers:
套装Label
的AutoSize
属性False
,TextAlign
属性MiddleCenter
和Dock
属性Fill
。
Control.Dock
属性(msdn.microsoft.com/en-us/library/…),可以将控件停靠(粘贴)到容器的特定一侧。例如Left
,Top
,Right
或Bottom
。Fill
告诉控件占用容器中的所有可用空间。
Dock
设置做任何事情。
Dock
设置是不必要的。更改AutoSize
属性会为标签提供一个边框,您可以手动调整其大小。
您将通过设置属性Anchor:无实现。
如果您不希望将标签停靠在整个可用区域中,只需设置SizeChanged事件而不是TextChanged。当autosize属性设置为True时,更改每个字母将更改标签的width属性及其文本。因此,顺便说一下,您可以使用任何公式来使标签在表单中居中。
private void lblReport_SizeChanged(object sender, EventArgs e)
{
lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
我想做类似的事情,但是在带有背景图像的表单上,我发现当标签中的文本更改时,使用此方法很明显可以重绘,因此我执行以下操作:*将标签AutoSize设置为true并将TextAlign设置为中间中心
然后,每次文本更改时(我的操作都是使用计时器完成的),我调用以下方法:
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属性设置为此返回值。这样可以确保在文本更改时标签始终位于表单的中心,并且全屏表单的重新绘制不明显。