Centrer une form à l'écran [Résolu]

Signaler
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
-
 Le programmeur Breton -
Bonjour,

j'ai un premier form qui s'affiche par défaut en haut à gauche (sans être collé au bord), lorsque dans cette fenetre j'ouvre une deuxème fenetre (j'instancie une nouvelle form), celle ci est placé aussi à l'endroit de la 1ère fenetre mais décalé de 20pixel je dirais vers la droite et vers le bas.

donc finalement je me dis autant afficher les deux fenêtres au millieu mais comment faire ? J'ai pensé à faire quelque chose comme ca:

 frm.Top = Screen.Height / 2 - frm.Height / 2
 frm.Left = Screen.Width / 2 - frm.Width / 2

or je n'ai pas accès à la propriété Height ni à Width lorsque je fais Screen.

Merci d'avance.

6 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
et pourquoi ne pas utiliser la propriété StartPosition = FormStartPosition.CenterParent;

(ou CenterScreen)

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]

Merci Beaucoup, effectivement c'est une excellente réponse.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
dans le designer il suffit de mettre la bonne valeur dans le propertygrid...

ou alors, si tu veux le faire dans le code, tu le fais dans le constructeur

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
1
Merci ca marche lorsque j'instancie une nouvelle form.

Par contre quand c'est ma première form qui démarre, j'utilise bien la propriété StartPosition dans le Load de la form, ca ne marche pas, pourquoi ?
Messages postés
4
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2011

il suffit de surcharger le OnLoad() de ton formulaire

protected override void OnLoad(EventArgs e)
        {
            base.OnLoad (e);

            this.Location = new System.Drawing.Point(
                System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width / 2 - Width / 2,
                System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height / 2 - Height / 2);

        }
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
hmm... c'était bon en VB6 ça !

aujourd'hui on utilise des outils modernes !

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
lol

<hr />
-Blog-
-Site Perso-