54 votes

Étiquettes alignées à droite dans WinForms

Le moyen le plus évident pour aligner à droite un Label en WinForms ne fonctionne pas: réglage d'ancrage en Haut/en Bas à Droite et TextAlign de Haut. Si la modification du texte de l'étiquette de Gauche coordonner reste inchangée au lieu de la Droite de coordonnées (dont on peut penser, est un bug).

Pour cette raison, j'ai toujours utilisé une pleine largeur TableLayoutPanel alignés à droite étiquettes. Cependant, ce n'est pas toujours très pratique, en fonction de la disposition en question...

Alors, je me demande si il y a d'autres moyens pour garder l'Étiquette aligné à droite en WinForms qui n'est jamais venu à moi?

66voto

Marc Gravell Points 482669

Une option simple consiste à désactiver AutoSize (défini sur false ) et à le surdimensionner afin qu'il y ait de l'espace disponible.

Vous pouvez également utiliser Dock au lieu de seulement Anchor , bien que cela ait une signification différente, vous devrez donc peut-être le mettre dans un Panel ou similaire). En fin de compte, cela fonctionne comme le premier - en le surdimensionnant en premier lieu; alors peut-être que la première option est plus simple.

10voto

Damien Points 747

L'utilisation d'un TableLayoutPanel avec des étiquettes ancrées est la seule méthode fiable que j'ai trouvée pour placer des étiquettes alignées à droite dans Winforms. La désactivation d'AutoSize et l'utilisation d'étiquettes surdimensionnées semblent provoquer d'étranges anomalies pour les utilisateurs à haute résolution.

9voto

Aaron Deming Points 435

L'utilisation d'un FlowLayoutPanel pour le faire fonctionne très bien.

 flowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft;
flowLayoutPanel2.Controls.Add(label);
 

Ensuite, assurez-vous simplement que le flowLayoutPanel est suffisamment grand pour que l'étiquette se développe.

7voto

Kelvyn Points 31

Voici ce qui a fonctionné pour moi sur un formulaire standard

  • Désactivez la propriété AutoSize pour que les étiquettes soient alignées à droite
  • Rendez tous les champs de la même taille (ce n'est peut-être pas vraiment nécessaire) en utilisant la barre d'outils Mise en page
  • Sélectionnez plusieurs étiquettes et alignez-les à droite à l'aide de la barre d'outils Disposition, positionnez-la à l'endroit
  • Définissez la propriété TextAlign sur l'un des paramètres xxxRight, par exemple, TopRight

0voto

Wael Dalloul Points 7995

si vous définissez la propriété de formulaire RightToLeft = yes; vous ne devez donc pas utiliser la propriété Alignement du texte, il suffit de définir l'ancre. essayez ces approches:

 Form.righttoleft = yes;
label.anchor = Top, Right;
label.TextAlign = TopLeft;
 

ou

 Form.righttoleft = No;
label.anchor = Top, Right;
label.TextAlign = TopRight;
 

ou

 Form.righttoleft = yes;
label.righttoleft = No;
label.anchor = Top, Right;
label.TextAlign = TopRight;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X