Question

J'ai donc deux formes, Mainform et extraform.
extraform est toujours proposé déplacé vers la droite de mainform quand mainform
initialise Parfois, mainform reprend les deux moniteurs et extraform est poussé hors de l'écran ne jamais être revu. Je voudrais éviter cela si possible. Comment puis-je faire? Il doit prendre en charge deux moniteurs, qui peuvent ou peuvent ne pas avoir la distance entre eux (par exemple l'écran 1 est 20px à la gauche de l'écran 2).

Comment puis-je faire?

Était-ce utile?

La solution

Vous pouvez utiliser la classe d'écran pour déterminer où la fenêtre est par rapport au bureau. La classe d'écran a une méthode FromRectangle, donc vous pouvez comprendre l'écran que vous devriez être le positionnement de votre formulaire sur (en passant la propriété Bounds de votre formulaire).

Chaque objet de l'écran a une propriété Bounds, que vous pouvez utiliser pour comparer à l'emplacement et la taille de la fenêtre, et les ajuster en conséquence.

Autres conseils

Cela dépend ce que vous voulez devrait se produire lorsque extraform est poussé au-delà des limites de l'écran (s).

Cependant, pour savoir si oui ou non il est poussé hors, il est assez simple en utilisant la classe System.Windows.Forms.Screens. Ensuite, vous pouvez faire la vérification des limites comme ceci:

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

code suppose étant sous une forme. Notez que ce code imprime seulement qu'un écran contient le formulaire si le formulaire est entièrement contenu à l'écran. Mais cela devrait être assez simple à fixer, en fonction de vos besoins.

Peut-être la propriété DesktopLocation dans vos formulaires peuvent vous donner une idée de ce qui se passe avec ce qui se passe avec eux

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top