Dans WinForms
J'utilise un Label
pour afficher différents messages tels que succès, échec, etc.
Je voudrais centrer cette étiquette dans la forme centrale. Je veux une solution qui la maintiendra centrée, qu'il n'y ait qu'un seul mot ou une phrase entière dans l'étiquette.
Control.Dock
propriété ( msdn.microsoft.com/en-us/library/… ), vous pouvez ancrer (coller) un contrôle à un certain côté du conteneur. Par exempleLeft
,Top
,Right
ouBottom
.Fill
indique au contrôle de prendre tout l'espace disponible dans le conteneur.Dock
décor.Dock
le réglage était inutile. La modification de laAutoSize
propriété donne à l'étiquette un cadre de délimitation dont vous pouvez ajuster manuellement la taille.Quelques contenus supplémentaires mineurs à définir par programmation:
Le style d'ancrage et l'alignement du contenu peuvent différer de vos besoins. Par exemple, pour une étiquette simple sur un formulaire wpf, j'utilise DockStyle.None.
la source
Vous l'obtiendrez avec la propriété Anchor: None.
la source
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 l'étiquette ainsi que son texte lorsque la propriété de taille automatique est définie sur True. Donc, en passant, vous pouvez utiliser n'importe quelle formule pour garder l'étiquette centrée dans le formulaire.
la source
La réponse acceptée n'a pas fonctionné pour moi pour deux raisons:
BackColor
défini ce paramètreAutoSize = false
etDock = Fill
fait que la couleur d'arrière-plan remplisse tout le formulaireAutoSize
définir la valeur false car le texte de mon étiquette était dynamiqueAu lieu de cela, j'ai simplement utilisé la largeur du formulaire et la largeur de l'étiquette pour calculer le décalage gauche:
la source
Je voulais faire quelque chose de similaire, mais sur un formulaire avec une image d'arrière-plan, j'ai trouvé que lorsque le texte de l'étiquette changeait, les repeints étaient évidents avec cette méthode, j'ai donc fait ce qui suit: * Définissez l'étiquette AutoSize sur true et TextAlign sur MiddleCenter
Ensuite, chaque fois que le texte a changé (le mien a été fait à l'aide d'une minuterie), j'ai appelé la méthode suivante:
Et définissez la propriété Location de l'étiquette sur cette valeur de retour. Cela garantissait que l'étiquette était toujours au centre du formulaire lorsque le texte changeait et que les repeints pour un formulaire en plein écran n'étaient pas évidents.
la source
Vous pouvez essayer l'extrait de code suivant:
C'est vraiment le centre
la source