2010-10-21 29 views
5

Maintenant, je clarifie ce peut être une question en double à partir de: Right-aligned labels in WinForms Mais aucune des réponses m'a satisfait.WinForms: right aligné étiquette autosize

Le problème est très simple:

J'ai une étiquette aligné à droite avec autosize setted true. Le comportement attendu est que lorsque le texte est augmenté, la coordonnée droite reste inchangée. Mais ce n'est pas ce qui arrive. La coordonnée gauche est celle qui reste inchangée.

Mon application est un peu petite, donc je ne veux pas commencer à mettre des contrôles dans les panneaux et donc .. Alors j'ai essayé toutes les solutions qui impliquaient SEULEMENT des propriétés d'étiquette. Le seul qui a fonctionné est de mettre la taille automatique à false et la sur-dimensionner. (Solution acceptée de la question Nº1692383). Mais c'est vraiment moche !!! Je voudrais vraiment éviter cela.

Une autre solution possible?

Merci d'avance!

+0

veuillez voir ma réponse éditée. La version d'origine ne fonctionnait pas correctement lorsque le formulaire a été redimensionné. –

+0

Tahnks @adrift !!! Je n'avais pas réalisé que le premier ne marchait pas. – Diego

Répondre

7

Une solution serait de saisir la marge de droite de l'étiquette dans le constructeur de forme, et dans l'étiquette SizeChanged événement, réinitialiser l'emplacement en fonction de la marge initiale droite, le courant de l'étiquette Width et le courant Width de l'étiquette Parent.

Cela suppose également que l'étiquette est ancrée sur le droit de gérer le redimensionnement de la forme.

private readonly int _rightMargin; 

public Form1() 
{ 
    InitializeComponent(); 

    _rightMargin = label1.Parent.Width - label1.Right; 
} 

private void label1_SizeChanged(object sender, EventArgs e) 
{ 
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top); 
}