Domanda

Così ho due forme, MainForm e extraform.
extraform è impostato sempre spostato a destra di MainForm quando MainForm inizializza
A volte mainform riprende entrambi i monitor e extraform viene spinto fuori dallo schermo per non essere mai più visto. Vorrei evitare questo, se possibile. Come posso fare così? Essa deve sostenere due monitor, che possono o non possono avere distanza fra loro (cioè schermo 1 è 20px a fianco di schermo 2).

Come posso fare questo?

È stato utile?

Soluzione

È possibile utilizzare la classe Screen di capire dove la vostra finestra è relativo al desktop. La classe Screen ha un metodo FromRectangle, in modo da poter capire quale schermo si dovrebbe essere Collocazione del modulo dal (passando proprietà Bounds del modulo a).

Ogni oggetto dello schermo ha una proprietà Bounds, che può essere utilizzato per confrontare la posizione e le dimensioni della finestra, e regolare di conseguenza.

Altri suggerimenti

Dipende da cosa si vuole dovrebbe accadere quando extraform è spinto oltre i limiti dello schermo (s).

Tuttavia, per sapere se sia o non è essere spinto fuori, è abbastanza semplice utilizzando la classe System.Windows.Forms.Screens. Poi si può fare il controllo dei limiti in questo modo:

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

Codice assume di essere in forma. Si noti che questo codice stampa solamente che uno schermo contiene il modulo se il modulo è completamente contenuto sullo schermo. Ma questo dovrebbe essere piuttosto semplice da risolvere, a seconda delle esigenze.

Forse la proprietà DesktopLocation nei moduli può dare un indizio su quello che succede con ciò che sta accadendo con loro

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top