2013-11-04 13 views
6

Prawdopodobnie moje pytanie jest duplikatem tego Multiple icons open in tray bar. W mojej aplikacji WinFormy wyświetlam aplikację w zasobniku systemowym po zamknięciu formularza, tzn. Aplikacja nie kończy działania po zamknięciu formularza, ale wychodzi z niego po kliknięciu przycisku "Zamknij" w menu kontekstowym prawego przycisku na pasku zadań aplikacji.Wiele ikon powiadomień w zasobniku systemowym w WinForm

Ale kiedy używam aplikacji, zauważam, że w zasobniku systemowym jest znacznie więcej ikon powiadomień. Ale gdy tylko najedę na nie myszką, wszystkie znikają, z wyjątkiem tego, z uruchomioną aplikacją. Próbowałem każdej metody, aby wyeliminować wiele ikon, ale nie jestem w stanie tego zrobić.

Poniżej jest mój kod Dla Minimalizacja do zasobnika systemowego

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

obciążenia formularza dodałem ten kod

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 zdarzenie jest następująco

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

Po kliknięciu myszką na ikonie napisałem następujący kod:

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

Próbowałem wyczyścić ikony powiadomień, ale nawet to mi nie pomogło. Czy brakuje mi czegoś naprawdę oczywistego. Każda pomoc będzie doceniona.

+0

Rozwiązałeś to? Powiedz mi, jak to zrobiłeś, ponieważ nie mogłem tego jeszcze zrobić. Dzięki. –

Odpowiedz

0

Ikony pozostają w obszarze powiadomień i znikają po najechaniu myszą, ponieważ aplikacja nie kończy poprawnie pracy. Czy wychodzisz z aplikacji lub zatrzymujesz debugowanie w VS? Dzieje się tak również wtedy, gdy wyjątek zostanie zgłoszony i aplikacja nagle się uruchomi.

+0

Jestem faktycznym wyjściu z aplikacji. Czy istnieje sposób na rozwiązanie tego problemu? – Vikneshwar

1

Dodaj Application.Exit() tej metody tutaj

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

nie trzeba this.Dispose jak będzie się nazywać w Application.Exit()

Sprawdź, czy proces nadal działa w Menedżerze zadań, czy to zakończyć i zobaczyć jeśli ikona zniknie.

+0

Aplikacja.Exit (0) pokazuje przy nieprawidłowych argumentach, Cant dajemy Application.Exit(); – Vikneshwar

+0

Ponadto podana metoda dotyczy zdarzenia zamknięcia. Ale nawet jeśli nie zamykam aplikacji. Nadal, gdy wykonuję wiele razy zminimalizować i wrócić do normalnego stanu mogę znaleźć wiele ikon w zasobniku systemowym. Jak sobie z tym poradzić? – Vikneshwar

+0

Przepraszam, zrobiłem literówkę –

Powiązane problemy