J'essaie de centrer un contrôle de taille fixe dans un formulaire.
Par intérêt, y a-t-il une manière non idiote de faire cela? Ce que je veux vraiment, c'est quelque chose d'analogue à la propriété css text-align.
Pour le moment, je mets la taille de la propriété de remplissage du formulaire environnant à une taille appropriée et la propriété Dock du contrôle à remplir.
Vous pouvez y parvenir avec l'utilisation de ancres. Ou plus précisément le non utilisation d’eux.
Les contrôles sont ancrés par défaut en haut à gauche du formulaire, ce qui signifie que lorsque la taille du formulaire sera modifiée, leur distance par rapport au côté supérieur gauche du formulaire restera constante. Si vous modifiez l'ancrage du contrôle en bas à gauche, le contrôle conservera la même distance entre les côtés inférieur et gauche du formulaire lorsque le formulaire sera redimensionné.
Si vous désactivez l'ancrage dans une direction, le contrôle restera centré dans cette direction lors du redimensionnement.
NOTE: La désactivation de l'ancrage via la fenêtre de propriétés dans VS2015 peut nécessiter la saisie de Aucune, Aucune (au lieu de la valeur par défaut Haut, Gauche)
myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ;
myControl.Top = (this.ClientSize.Height - myControl.Height) / 2;
Puisque vous ne précisez pas si le formulaire peut être redimensionné ou non, il existe un moyen simple de ne pas vous soucier de le redimensionner (si vous vous en souciez, optez pour la solution Mitch Wheats):
Sélectionnez la commande -> Format (option de menu) -> Centrer dans la fenêtre -> Horizontalement ou verticalement
J'ai trouvé un excellent moyen de le faire et cela fonctionnera avec plusieurs contrôles. Ajouter un TableLayout avec 3 colonnes. Faites de la colonne centrale une taille absolue (quelle que soit la pièce dont vous avez besoin). Définissez les deux colonnes extérieures sur 100%. Ajoutez un panneau à la colonne centrale, ajoutez les contrôles dont vous avez besoin et placez-les à l'endroit souhaité. Ce panneau central restera désormais centré dans votre formulaire.
Vous pouvez placer le contrôle que vous souhaitez centrer dans un panneau et définir les valeurs de remplissage gauche et droite sur une valeur supérieure à celle par défaut. Tant qu'ils sont égaux et que votre contrôle est ancré aux côtés du panneau, il apparaîtra centré dans ce panneau. Vous pouvez ensuite ancrer le panneau de conteneur à son parent si nécessaire.
vous pouvez placer toutes vos commandes dans le panneau, puis écrire un code pour déplacer votre panneau au centre de votre formulaire.
panelMain.Location =
new Point(ClientSize.Width / 2 - panelMain.Size.Width / 2,
ClientSize.Height / 2 - panelMain.Size.Height / 2);
panelMain.Anchor = AnchorStyles.None;
En outre, si vous souhaitez l'aligner au centre d'un autre contrôle:
//The "ctrlParent" is the one on which you want to align "ctrlToCenter".
//"ctrlParent" can be your "form name" or any other control such as "grid name" and etc.
ctrlToCenter.Parent = ctrlParent;
ctrlToCenter.Left = (ctrlToCenter.Parent.Width - ctrlToCenter.Width) / 2;
ctrlToCenter.Top = (ctrlToCenter.Parent.Height - ctrlToCenter.Height) / 2;
Cela implique de le regarder (eh bien, je suppose que vous pourriez sortir une calculatrice et calculer) mais insérez simplement ledit contrôle sur le formulaire, puis supprimez tout ancrage (ancre = Aucun).