2011-12-07 8 views
5

Sto cercando di capire come spostare System.Windows.Forms.Form specificato su un'altra schermata rispetto a quella principale. Ho ComboBox con un elenco di schermate disponibili in cui l'utente seleziona qualsiasi schermo che gli piace e la mia applicazione dovrebbe spostare una delle sue finestre su quello schermo.Sposta modulo nella schermata specificata

Ho solo uno schermo sul mio laptop e nessun monitor esterno, quindi ComboBox sul mio computer offre solo un'opzione. Penso di minimizzare la finestra desiderata, spostandola nell'angolo sinistro al centro dei limiti dello schermo selezionato e massimizzando il lavoro farebbe il lavoro, giusto? Non riesco a testarlo. E 'un buon modo per andare?

Grazie in anticipo!

+0

Possibile duplicato di: http://stackoverflow.com/questions/2561104/c-sharp-winform-show-form-in-se –

+0

È necessario ottenere monitor e testarlo. Non puoi supportare il codice che non hai mai verificato. –

risposta

5

Ecco quello che ho fatto, come un semplice test ...

ho aggiunto una semplice classe wrapper in modo che io possa cambiare ciò che accade sulla chiamata ToString (Volevo solo vedere il nome elencato nella casella combinata)

private class ScreenObj 
{ 
    public Screen screen = null; 

    public ScreenObj(Screen scr) 
    { 
     screen = scr; 
    } 

    public override string ToString() 
    { 
     return screen.DeviceName; 
    } 
} 

In caso di carico di maschera ho aggiunto questo:

foreach(Screen screen in Screen.AllScreens) 
{ 
    cboScreens.Items.Add(new ScreenObj(screen)); 
} 

E per l'evento di modifica indice selezionato della casella combinata ho avuto questa:

private void cboScreens_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    object o = cboScreens.SelectedItem; 
    if(null == o) 
     return; 

    ScreenObj scrObj = o as ScreenObj; 
    if(null == scrObj) 
     return; 

    Point p = new Point(); 

    p.X = scrObj.screen.WorkingArea.Left; 
    p.Y = scrObj.screen.WorkingArea.Top; 

    this.Location = p; 
} 

Ha spostato il modulo nell'angolo in alto a sinistra di ciascuno dei miei schermi.

+1

grazie. questo è esattamente ciò di cui avevo bisogno. –

+0

@ pennyrave, funziona questo codice se utilizzo la porta hdmi? –

Problemi correlati