minimizar o aplicativo na bandeja do sistema

Eu tenho um aplicativo de formulários do Windows com tecnologia C # e Visual Studio 2010.

Como posso minimizar meu aplicativo na bandeja do sistema (não na barra de tarefas) e, em seguida, trazê-lo de volta quando você clica duas vezes na bandeja do sistema? qualquer ideia? também, como posso fazer algum menu no ícone na bandeja do sistema e quando clico nele, ele mostra um menu como Login, Desconectar, Conectar, algo assim. Além disso, existem methods para mostrar como um baloon aparecendo na bandeja do sistema?

PS: Eu já adicionei um notifyIcon, mas não sei como usá-lo.

  • Bandeja do sistema c # minimizar para bandeja com NotifyIcon
  • Minimizar janela para a bandeja do sistema

Manipule o evento de redimensionamento do formulário. Neste manipulador, você substitui a funcionalidade básica do evento Redimensionar para tornar o formulário minimizado na bandeja do sistema e não na barra de tarefas. Isso pode ser feito fazendo o seguinte no manipulador de events de redimensionamento do formulário: Verifique se a propriedade WindowState do formulário está definida como FormWindowState.Minimized. Se sim, oculte seu formulário, ative o object NotifyIcon e mostre a dica de balão que mostra algumas informações. Depois que o WindowState se torna FormWindowState.Normal, desabilite o object NotifyIcon definindo sua propriedade Visible como false. Agora, você deseja que a janela reapareça quando clicar duas vezes no object NotifyIcon na barra de tarefas. Para isso, manipule o evento MouseDoubleClick do NotifyIcon. Aqui, você mostra o formulário usando o método 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; } } 

Eu encontrei isso para realizar toda a solução. A resposta acima não consegue remover a janela da barra de tarefas.

 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; } 

Também é bom definir as seguintes propriedades do controle do ícone de notificação usando o designer de formulários.

 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]"; 

não esqueça de adicionar o arquivo de ícone ao seu notifyIcon ou ele não aparecerá na bandeja.

Eu iria com

 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; } 

tente isso

  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; } 

Este é o método que eu uso em meus aplicativos, é bastante simples e auto-explicativo, mas estou feliz em dar mais detalhes em resposta aos seus comentários.

  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); } 

Ao clicar na imagem na bandeja do sistema, você pode verificar se o quadro está visível e, em seguida, você precisa definir Visible = true ou false

… e para o menu de notificação de clique direito, adicione um menu de contexto ao formulário, edite-o e defina os comandos mouseclick para cada um dos contextmenuitems clicando duas vezes nele e, em seguida, anexe-o ao notifyicon1 selecionando ContextMenuStrip na propriedade notifyicon.