ridurre a icona l’app nella barra delle applicazioni

Ho una app per moduli Windows basata su C # e Visual Studio 2010.

Come posso minimizzare la mia app nella barra delle applicazioni (non nella barra delle applicazioni), quindi riportarla indietro quando si fa doppio clic nella barra delle applicazioni? qualche idea? inoltre, come posso creare un menu nell’icona nella barra delle applicazioni e quando clicco con il tasto destro, mostra un menu come Login, Disconnect, Connect, qualcosa del genere. Inoltre, ci sono dei metodi per mostrare come un baloon che emerge dalla barra delle applicazioni?

PS: ho già aggiunto un notifyIcon, ma non so come usarlo.

  • C # System Tray Riduci al vassoio con NotifyIcon
  • Riduci a icona la finestra sulla barra delle applicazioni

Gestire l’evento di ridimensionamento del modulo. In questo gestore, si ignora la funzionalità di base dell’evento Ridimensiona per rendere il modulo ridotto a icona sulla barra delle applicazioni e non sulla barra delle applicazioni. Questo può essere fatto facendo quanto segue nel gestore di eventi Resize del tuo modulo: Controlla se la proprietà WindowState del modulo è impostata su FormWindowState.Minimized. Se sì, nascondi il modulo, triggers l’object NotifyIcon e mostra la punta del fumetto che mostra alcune informazioni. Una volta che WindowState diventa FormWindowState.Normal, disabilitare l’object NotifyIcon impostando la sua proprietà Visible su false. Ora, si desidera che la finestra riappaia quando si fa doppio clic sull’object NotifyIcon nella barra delle applicazioni. Per questo, gestisci l’evento MouseDoubleClick di NotifyIcon. Qui, si mostra il modulo usando il metodo Show ().

private void frmMain_Resize(object sender, EventArgs e) { if (FormWindowState.Minimized == this.WindowState) { mynotifyicon.Visible = true; mynotifyicon.ShowBalloonTip(500); this.Hide(); } else if (FormWindowState.Normal == this.WindowState) { mynotifyicon.Visible = false; } } 

Ho trovato questo per realizzare l’intera soluzione. La risposta sopra non riesce a rimuovere la finestra dalla barra delle applicazioni.

 private void ImportStatusForm_Resize(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { notifyIcon.Visible = true; notifyIcon.ShowBalloonTip(3000); this.ShowInTaskbar = false; } } private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e) { this.WindowState = FormWindowState.Normal; this.ShowInTaskbar = true; notifyIcon.Visible = false; } 

Inoltre, è utile impostare le seguenti proprietà del controllo dell’icona di notifica utilizzando la finestra di progettazione dei moduli.

 this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error. this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]"; this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]"; this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use this.notifyIcon.Text = "[Message shown when hovering over tray icon]"; 

non dimenticare di aggiungere un file icona al tuo notifyIcon o non comparirà nel vassoio.

Io andrei con

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

prova questo

  private void Form1_Load(object sender, EventArgs e) { notifyIcon1.BalloonTipText = "Application Minimized."; notifyIcon1.BalloonTipTitle = "test"; } private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) { ShowInTaskbar = false; notifyIcon1.Visible = true; notifyIcon1.ShowBalloonTip(1000); } } private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { ShowInTaskbar = true; notifyIcon1.Visible = false; WindowState = FormWindowState.Normal; } 

Questo è il metodo che uso nelle mie applicazioni, è abbastanza semplice e intuitivo, ma sono felice di fornire maggiori dettagli in risposta ai tuoi commenti.

  public Form1() { InitializeComponent(); // When window state changed, trigger state update. this.Resize += SetMinimizeState; // When tray icon clicked, trigger window state change. systemTrayIcon.Click += ToggleMinimizeState; } // Toggle state between Normal and Minimized. private void ToggleMinimizeState(object sender, EventArgs e) { bool isMinimized = this.WindowState == FormWindowState.Minimized; this.WindowState = (isMinimized) ? FormWindowState.Normal : FormWindowState.Minimized; } // Show/Hide window and tray icon to match window state. private void SetMinimizeState(object sender, EventArgs e) { bool isMinimized = this.WindowState == FormWindowState.Minimized; this.ShowInTaskbar = !isMinimized; systemTrayIcon.Visible = isMinimized; if (isMinimized) systemTrayIcon.ShowBalloonTip(500, "Application", "Application minimized to tray.", ToolTipIcon.Info); } 

Al clic sull’immagine nella barra delle applicazioni, puoi verificare se il frame è visibile e quindi devi impostare Visible = true o false

… e per il menu di notifica del clic con il pulsante destro aggiungi un modulo di scelta rapida al modulo e modificalo e imposta gli eventi mouseclick per ciascuno dei concetti di contesto facendo doppio clic su di essi e quindi collegalo a notifyicon1 selezionando ContextMenuStrip nella proprietà notifyicon.