2013-11-04 54 views
6

可能我的问题是这个 Multiple icons open in tray bar的重复。在我的winforms应用程序中,一旦表单关闭,我将在应用程序中显示应用程序,即应用程序在关闭表单后不退出,但在应用程序的系统托盘上的右键单击上下文菜单上单击“关闭”时退出。Winforms中系统托盘中的多个通知图标

但是随着我继续使用该应用程序,我注意到系统托盘中还有更多的通知图标。但是,一旦我将鼠标悬停在它们上面,它们就会消失,除了应用程序正在运行。我试过每种方法来消除多个图标,但我无法这样做。

下面是我的代码 最小化到系统托盘

public void MinimizeToTray() 
     { 
      try 
      { 
       this.WindowState = FormWindowState.Minimized; 
       TrayIcon.Visible = true; 
       TrayIcon.ShowBalloonTip(1000); 
       ShowInTaskbar = false; 
       //this.Activate(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

在窗体加载我加入这个代码

private void LoadTrayMenu() 
     { 
      TrayMenu.Items.Add("Reminder"); 
      TrayMenu.Items.Add("Close"); 
      TrayMenu.Items[0].Click += new EventHandler(this.Reminder_Click); 
      TrayMenu.Items[1].Click += new System.EventHandler(this.Dispose_Click); 
      TrayIcon.ContextMenuStrip = TrayMenu; 
     } 

的Dispose事件如下

private void Dispose_Click(object Sender, EventArgs e) 
     { 
      TrayIcon.Visible = false; 
      TrayIcon.Icon = null; 
      TrayIcon.Dispose(); 
      this.Dispose(); 
     } 

在鼠标点击图标上,我写下了以下代码

private void TrayIcon_MouseClick(object sender, MouseEventArgs e) 
     { 
      if (e.Button == System.Windows.Forms.MouseButtons.Left) 
      { 

       this.Show(); 
       this.WindowState = FormWindowState.Normal; 
       TrayIcon.Visible = false; 
       //TrayIcon.Icon = null; 
       //TrayIcon.Dispose(); 
       ShowInTaskbar = true; 
      } 
     } 

我试着清除通知图标,但即使这样也没有帮助我。 我错过了一些非常明显的东西。任何帮助,将不胜感激。

+0

你解决了这个问题吗?请告诉我你是如何做到的,因为我还没有做到。谢谢。 –

回答

0

图标仅保留在通知区域中,并在鼠标悬停时消失,因为应用程序未完全退出。你正在退出应用程序还是停止VS中的调试?当抛出异常并且app突然存在时也会发生这种情况。

+0

我正在退出应用程序。有没有办法来解决这个问题。? – Vikneshwar

1

添加Application.Exit()这种方法在这里

private void Dispose_Click(object Sender, EventArgs e) 
     { 
      TrayIcon.Visible = false; 
      TrayIcon.Icon = null; 
      TrayIcon.Dispose(); 
      Application.Exit() 
     } 

你不需要this.Dispose,因为它会在Application.Exit()

检查调用进程是否仍然在任务管理器中运行,如果它是结束它,看看如果图标消失。

+0

Application.Exit(0)显示在无效参数,不能我们给Application.Exit(); – Vikneshwar

+0

此外,您提供的方法是关闭事件。但即使我不关闭应用程序。尽管如此,当我执行多次时最小化并恢复到正常状态时,我可以在系统托盘中找到许多图标。我该如何处理? – Vikneshwar

+0

对不起,我犯了一个错字 –