2010-12-03 16 views
95

En WinForms J'utilise un Label pour afficher différents messages comme le succès, l'échec, etc.Comment conserver une étiquette centrée dans WinForms?

Je voudrais centrer cette étiquette sous la forme centrale. Je veux une solution qui le maintiendra centré s'il y a juste un mot ou une phrase entière dans l'étiquette.

Répondre

187

Ensemble propriété de AutoSizeLabel-False, TextAlign bien à MiddleCenter et Dock propriété à Fill.

+0

merci décyclone, cela a fonctionné. Peux-tu guider ce que fait Dock? – haansi

+3

Avec la propriété 'Control.Dock' (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx), vous pouvez ancrer (coller) un contrôle à un certain côté du conteneur. Par exemple 'Left',' Top', 'Right' ou' Bottom'. 'Fill' indique au contrôle de prendre tout l'espace disponible dans le conteneur. – decyclone

+0

Existe-t-il un truc pour que la taille de la police s'étende également? – Edmondo1984

8

Vous l'obtiendrez avec le réglage de la propriété Ancrage: Aucun.

9

Certains contenus supplémentaires mineurs pour la mise en programmation:

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

DockStyle et l'alignement de contenu peuvent différer de vos besoins. Par exemple, pour une étiquette simple sur un formulaire wpf, j'utilise DockStyle.None.

5

Si vous ne souhaitez pas ancrer l'étiquette dans toute la zone disponible, définissez simplement l'événement SizeChanged au lieu de TextChanged. La modification de chaque lettre modifie la propriété width de label ainsi que son texte lorsque la propriété autosize est définie sur True. Donc, d'ailleurs, vous pouvez utiliser n'importe quelle formule pour garder le label centré dans la forme.

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