2009-04-08 5 views
0

J'ai donc deux formes, mainform et extraform.
extraform est toujours placé à droite de la mainform lorsque la mainform est initialisée
Parfois, la mainform prend les deux moniteurs et extraform est repoussé hors de l'écran pour ne plus jamais être vu. Je voudrais empêcher cela si possible. Comment puis-je le faire? Il doit prendre en charge deux moniteurs, qui peuvent avoir ou non une distance entre eux (l'écran 1 est 20px à gauche de l'écran 2).Comment puis-je savoir si mon formulaire est affiché au-delà de l'écran?

Comment est-ce que je peux faire ceci?

Répondre

6

Vous pouvez utiliser la classe Screen pour déterminer l'emplacement de votre fenêtre par rapport au bureau. La classe Screen a une méthode FromRectangle, ce qui vous permet de déterminer sur quel écran vous souhaitez positionner votre formulaire (en passant la propriété Bounds de votre formulaire).

Chaque objet Screen possède une propriété Bounds que vous pouvez utiliser pour comparer l'emplacement et la taille de votre fenêtre et les ajuster en conséquence.

0

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

1

Cela dépend ce que vous voulez doit se produire lorsque extraform est poussé au-delà des limites de l'écran (s). Toutefois, pour savoir s'il est désactivé ou non, il est assez simple d'utiliser la classe System.Windows.Forms.Screens. Alors vous pouvez faire des bornes vérifiant comme ceci:

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

Le code suppose être dans une forme. Notez que ce code imprime seulement qu'un écran contient le formulaire si le formulaire est complètement contenu sur l'écran. Mais cela devrait être plutôt simple à régler, en fonction de vos besoins.

Questions connexes