2017-09-29 2 views
0

Sur un formulaire, j'ai obtenu un TabControl, et au-dessus une étiquette. Je veux toujours que l'étiquette apparaisse centrée au-dessus du TabControl. La largeur du TabControl change (avec des ancres) si la largeur du formulaire est modifiée. Maintenant je veux que la position (l'emplacement) de l'étiquette soit ajustée en conséquence.Calculer et définir l'emplacement de l'étiquette au moment du design

Lors de l'exécution c'est facile:

//Position headline label 
lblHeadline.Left = tabControl1.Left + (tabControl1.Width/2) - (lblHeadline.Width/2); 

Mais comment puis-je obtenir Visual Studio pour le faire au moment de la conception, de sorte que si la largeur de la forme est modifiée à partir de la fenêtre des propriétés, la position de l'étiquette est automatiquement recalculé?

+1

Winforms est basé sur 'Pixel' * pas *' Vectors' par opposition à WPF. Ainsi, les changements d'heure de conception ne seront pas aussi dynamiques que vous le souhaitez –

Répondre

0

Winforms ne sont pas si dynamique au moment du design, comme @o_O alreday mentionné dans son commentaire.

Mais dans votre cas, il n'est pas nécessaire de centrer le Label par programme.
comme suit, l'étiquette de texte sera également centrée au moment de la conception:

  • Réglez le AutoSize -Property de l'étiquette False

  • Régler la largeur de l'étiquette sur la même largeur que TabControl

  • Réglez le Anchor -Property de l'étiquette Top, Left, Right

  • Régler le TextAlign -Property de l'étiquette TopCenter

+0

Merci pour votre suggestion. A gauche et à droite de l'étiquette il y a d'autres composants placés, ainsi l'étiquette se chevaucherait avec ceux-ci au cas où je ferais l'étiquette si large. – JohnSaps

+0

Ensuite, vous pouvez utiliser un TableLayoutPanel. J'ai répondu [une question similaire] (https://stackoverflow.com/questions/46316025/how-to-resize-controls-inside-groupbox-without-overlapping/46316465#46316465) il y a quelques jours; – MatSnow