Ridurre a icona una finestra di sistema nel vassoio in C # senza vederla sospesa sulla barra delle applicazioni

this.ShowInTaskbar = false; this.WindowState = FormWindowState.Minimized; //this.visible = false (Hotkeys stop working forever but the grey rest of the form would disappear from above taskbar) ReRegisterHotkeys(); 

Io uso il codice qui sopra per ridurre al minimo la mia applicazione con l’icona di una barra. Ora il resto ridotto al minimo del mio modulo si blocca ancora nell’angolo sinistro a destra un po ‘sopra la barra delle applicazioni dove risiede il pulsante di avvio. Visibile è solo la barra del titolo grigia con la piccola “x” per chiuderla e il testo della didascalia sopra la barra del titolo. Questo è molto strano Ho impostato il mio modulo per “mimimizzato” e impostato per non mostrare nella barra delle applicazioni e lo fa ancora. Ho registrato i tasti di scelta rapida con il mio modulo in modo da non impostarlo su “invisibile” altrimenti i tasti di scelta rapida in qualche modo cessano di funzionare anche se di nuovo registrare nuovamente i tasti di scelta rapida in seguito. Non ho trovato ancora nessuna alternativa per rimuovere questa sottotitolazione di forma minimizzata diversa da quella impostata su “invisibile” o rimuovendo la sua barra del titolo che anch’io non voglio fare. Ho bisogno di barra del titolo, icona della barra del titolo e area di controllo della barra del titolo in questo programma, il modulo non deve diventare una finestra degli strumenti o senza bordi.

Come faccio a rendere questo resto grigio del modulo sopra la barra delle applicazioni che scompare senza impostare il mio modulo su una finestra degli strumenti e senza impostarlo completamente invisibile. I miei tasti di scelta rapida devono ancora funzionare dopo di esso e il modulo deve comunque mantenere la barra del titolo, l’icona e l’area di controllo quando viene nuovamente impostato su normale.

Ho preso il mio codice hotkey da questo esempio . L’unica differenza è che ho impacchettato la procedura per registrare l’hotkey in una sottofunzione chiamata “ReRegisterHotkeys ()”.

Importante: il problema con la barra del titolo che mostra quando il modulo è ridotto a icona non è collegato ai tasti di scelta rapida registrati. È un problema comune di “C #”. Se ho un modulo e lo minimizzo e lo metto invisibile nella barra delle applicazioni, viene comunque mostrata la barra del titolo con la “x” nella barra delle applicazioni. Questo voglio rimuovere senza rendere il modulo invisibile o senza rimuovere lo stile della finestra. “this.show” o “this.hide” si comportano lo stesso fatale di “this.visible = true / false” poiché i tasti di scelta rapida non funzionano più. Creo il mio modulo come mostrato di default e non voglio crearlo già nascosto.

Questo è ciò che non deve essere lì – come rimuoverlo senza ferire: inserisci la descrizione dell'immagine qui

    Tutto quello che devi fare è chiamare Hide() e Show() quando vuoi hide e mostrare il tuo modulo. NOTA: Hide() si nasconde anche dalla barra delle applicazioni.

     private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) Hide(); } 

    È ansible hide e mostrare il NotifyIcon opposto al modulo per non avere un’icona quando viene visualizzato il modulo.

    Ovviamente è necessario un NotifyIcon per visualizzare la tua app nella barra delle applicazioni.

    Finalmente il tuo codice sarà simile a questo:

     private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) { Hide(); notifyIcon1.Visible = true; } } private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { Show(); notifyIcon1.Visible = false; WindowState = FormWindowState.Normal; }