2013-11-04 52 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

對不起,我犯了一個錯字 –