Domanda

Sto usando Windows Vista e C # .net 3.5, ma il mio amico ha eseguito il programma su XP e ha lo stesso problema.

Quindi ho un programma C # che ho in esecuzione in background con un'icona nel SystemTray. Ho un gancio per tastiera di basso livello, quindi quando premo due tasti (Ctr + windows in questo caso) tirerà il modulo principale dell'applicazione. Il modulo è impostato per essere a schermo intero nel tasto combo premere gestore pari:

this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;

Quindi praticamente funziona. Quando premo CTR + Windows, viene visualizzato il modulo, indipendentemente dal programma a cui mi sono focalizzato. Ma a volte, la barra delle applicazioni verrà comunque visualizzata sul modulo, che non desidero. Voglio che sia sempre a schermo intero quando premo quella combinazione di tasti.

Immagino che abbia qualcosa a che fare con ciò che l'applicazione ha inizialmente focalizzato. Ma anche quando faccio clic sul mio modulo principale, la barra delle applicazioni a volte rimane lì. Quindi mi chiedo se la concentrazione sia davvero il problema. Sembra che a volte la barra delle applicazioni sia testarda e non voglia sedersi dietro il mio programma.

Qualcuno ha qualche idea su come posso risolvere questo problema?

EDIT: maggiori dettagli- Sto cercando di ottenere lo stesso effetto di un browser Web quando lo metti in modalità schermo intero o quando metti powerpoint in modalità presentazione.

In una finestra, lo fai mettendo nessuno sullo stile del bordo e massimizzando la finestra. Ma a volte la finestra non copre la barra delle applicazioni per qualche motivo. La metà delle volte lo farà.

Se ho la finestra principale in alto, le altre rimarranno dietro di essa quando faccio clic su di essa, cosa che non voglio se la barra delle applicazioni è nascosta.

È stato utile?

Soluzione

Prova questo (dove questo è il tuo modulo):

this.Bounds = Screen.PrimaryScreen.Bounds;
this.TopMost = true;

Questo imposterà il modulo a schermo intero e coprirà la barra delle applicazioni.

Altri suggerimenti

Ho provato tante soluzioni, alcune funzionano su Windows XP e tutte NON su Windows 7. Dopotutto scrivo un metodo semplice per farlo.

private void GoFullscreen(bool fullscreen)
    {
        if (fullscreen)
        {
            this.WindowState = FormWindowState.Normal;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Bounds = Screen.PrimaryScreen.Bounds;
        }
        else
        {
            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
        }
    }

l'ordine del codice è importante e non funzionerà se si cambia la posizione di WindwosState e FormBorderStyle.

Uno dei vantaggi di questo metodo è lasciare TOPMOST su false che consentono ad altri moduli di passare al modulo principale.

Ha assolutamente risolto il mio problema.

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F11)
        if (FormBorderStyle == FormBorderStyle.None)
        {
            FormBorderStyle = FormBorderStyle.Sizable;
            WindowState = FormWindowState.Normal;
        }
        else
        {
            SuspendLayout();
            FormBorderStyle = FormBorderStyle.None;
            WindowState = FormWindowState.Maximized;
            ResumeLayout();
        }
}

Per quanto ne so, la barra delle applicazioni è sopra o sotto le finestre in base a "Mantieni la barra delle applicazioni in cima ad altre finestre" ambientazione. (Almeno, questa è la dicitura in XP.) Suppongo che potresti provare a vedere se riesci a rilevare questa impostazione e attivarla se necessario?

Prova a ridimensionare il modulo e portalo in primo piano nell'ordine z in questo modo:

        Rectangle screenRect = Screen.GetBounds(this);
        this.Location = screenRect.Location;
        this.Size = screenRect.Size;
        this.BringToFront();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top