Définition de l'emplacement du formulaire lors de l'appel de Form.Show ()
Je suis en train de définir l'emplacement d'un formulaire lors de l'appel par .Show()
. Le problème est que parce que je suis en utilisant .Show
au lieu de .ShowDialog
la StartPosition valeur ne fonctionne pas. Je ne peux pas utiliser le .Showdialog
car je veux que le programme de travail en arrière-plan pendant l'affichage du formulaire.
Quand je suis de la création du formulaire je l'ai mis pour une valeur fixe:
using (ConnectingForm CF = new ConnectingForm())
{
CF.Show();
CF.Location = new Point(this.ClientSize.Width / 2, this.ClientSize.Height / 2);
}
Mais lorsque j'exécute le Code, le formulaire se positionne sur des positions différentes à chaque fois que je le démarre.
Toutes les solutions? (L'emplacement n'est jamais mis n'importe où ailleurs par mon code)
source d'informationauteur Robin
Vous devez vous connecter pour publier un commentaire.
StartPosition devrait fonctionner correctement avec
Form.Show
. Essayez:Si vous voulez placer manuellement la forme, comme vous l'avez indiqué, ce qui peut être fait aussi bien, mais encore faut définir le
StartPosition
propriétéManual
:Sur une note de côté, vous ne devriez pas utiliser un
using
déclaration avecForm.Show
.using
appelleraDispose
sur la forme, ce qui n'est pas souhaitable, car la forme de la durée de vie est plus longue que ce bloc de code.Avec l'aide de quelques autres threads, j'ai trouvé une solution qui fonctionne:
Sur le nouveau événement load du formulaire:
(Je ne suis pas expert, donc s'il vous plaît corrigez-moi si je me trompe)
Voici comment j'interprète le problème et la solution:
Le problème depuis le début a été que la première forme (MainForm) de Démarrage Position a été définie par Défaut de Windows, dont l'Emplacement varie lorsque vous démarrez le formulaire. Lorsque j'ai alors appelé le nouveau formulaire (formulaire de Connexion), c'est l'endroit n'était pas par rapport à celle du parent, mais l'emplacement (0, 0) (lef haut à droite de l'écran). Donc, ce que je voyais était la MainForms position changer de, qui la faisait ressembler à la Connexion de la fiche de la position était en mouvement. Donc, la solution à ce problème a été fondamentalement d'abord de définir le nouveau formulaire pour le Formulaire Principal. Après que j'ai été en mesure de définir l'emplacement pour être le centre de la MainForm.
TL;DR la nouvelle forme de l'emplacement n'a pas été par rapport à la mère du formulaire emplacement, mais à une position fixe qui je suppose est (0, 0)
J'ai changé la MainForm de Démarrage de la Position d'un fixe pour mon propre confort. J'ai aussi ajouté un événement pour s'assurer que les nouvelles formes position a toujours été le centre de la MainForm.
J'espère que cela aidera d'autres avec le même problème!!!!