151 votes

Comment garder une étiquette centrée dans WinForms ?

Sur WinForms J'utilise un Label pour afficher différents messages comme le succès, l'échec, etc.

J'aimerais centrer cette étiquette dans le formulaire central. Je veux une solution qui la maintienne centrée, qu'il y ait un seul mot ou une phrase entière dans l'étiquette.

1voto

LordPupazz Points 9

Je voulais faire quelque chose de similaire, mais sur un formulaire avec une image de fond, j'ai trouvé que lorsque le texte de l'étiquette changeait, les repeints étaient évidents avec cette méthode, donc j'ai fait ce qui suit : J'ai donc procédé comme suit : * Je règle l'étiquette sur AutoSize true et TextAlign sur MiddleCenter.

Ensuite, à chaque fois que le texte changeait (le mien était fait à l'aide d'une minuterie), j'appelais la méthode suivante :

    private Point GetPosition()
    {
        int y = (this.Height / 2) - (label1.Height / 2);
        int x = (this.Width / 2) - (label1.Width / 2);
        return new Point(x, y);
    }

Et définir la propriété Location de l'étiquette à cette valeur de retour. Cela permet de s'assurer que l'étiquette est toujours au centre du formulaire lorsque le texte change et que les repeints pour un formulaire en plein écran ne sont pas évidents.

1voto

Minwoo Yu Points 148

Vous pouvez essayer l'extrait de code suivant :

private Point CenterOfMenuPanel<T>(T control, int height=0) where T:Control {
    Point center = new Point( 
        MenuPanel.Size.Width / 2 - control.Width * 2,
        height != 0 ? height : MenuPanel.Size.Height / 2 - control.Height / 2);

    return center;
}

C'est vraiment le centre

enter image description here

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