如何在WinForms中保持标签中心?

haa*_*nsi 129 .net c# winforms centering

WinForms我使用a Label来显示不同的消息,如成功,失败等.

我想将中心标签置于中心位置.我想要一个解决方案,无论标签中只有一个单词还是整个句子,它都能保持居中.

dec*_*one 254

套装LabelAutoSize属性False,TextAlign属性MiddleCenterDock属性Fill.

  • `Dock`设置是不必要的.更改`AutoSize`属性为标签提供了一个边界框,您可以手动调整其大小. (4认同)
  • 使用`Control.Dock`属性(http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx),您可以将控件停靠(粘贴)到某一侧容器.例如`Left`,`Top`,`Right`或`Bottom`.`Fill`告诉控件获取容器中的所有可用空间. (3认同)
  • 工作了,但我不需要对`Dock`设置做任何事情. (3认同)

Xaw*_*cki 12

您将通过设置属性Anchor:None来实现它.


小智 12

以编程方式设置的一些小的附加内容:

Label textLabel = new Label() { 
        AutoSize = false, 
        TextAlign = ContentAlignment.MiddleCenter, 
        Dock = DockStyle.None, 
        Left = 10, 
        Width = myDialog.Width - 10
};            
Run Code Online (Sandbox Code Playgroud)

Dockstyle和内容对齐可能与您的需求不同.例如,对于wpf表单上的简单标签,我使用DockStyle.None.


小智 8

如果您不想在整个可用区域中停靠标签,只需设置SizeChanged事件而不是TextChanged.当autosize属性设置为True时,更改每个字母将更改标签的宽度属性及其文本.因此,顺便说一句,你可以使用任何公式来保持标签的中心形式.

private void lblReport_SizeChanged(object sender, EventArgs e)
{
    lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
Run Code Online (Sandbox Code Playgroud)


The*_*eek 8

接受的答案对我不起作用有两个原因:

  1. 我已经BackColor设置了这样的设置AutoSize = falseDock = Fill导致背景颜色填充整个表单
  2. 无论如何我不能AutoSize设置为 false 因为我的标签文本是动态的

相反,我只是使用表单的宽度和标签的宽度来计算左偏移量:

MyLabel.Left = (this.Width - MyLabel.Width) / 2;
Run Code Online (Sandbox Code Playgroud)