2013-11-04 2 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; 
     } 

파기하는 이벤트는

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에서 응용 프로그램을 종료하거나 디버그를 중지 하시겠습니까? 이는 예외가 발생하고 앱이 갑자기 존재할 때도 발생합니다.

+0

저는 신청서를 끝내고 있습니다. 이 문제를 해결할 방법이 있습니까? – Vikneshwar

1

Application.Exit()

검사에서 호출되는 바와 같이, 프로세스가 계속 작업 관리자에서 실행중인 경우 그것을 종료하고 볼 경우 당신이 this.Dispose 필요하지 않습니다 여기에이 방법

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

Application.Exit() 추가 아이콘이 사라지면

+0

Application.Exit (0)은 잘못된 인수에서 Cant에게 Application.Exit()을 제공합니다. – Vikneshwar

+0

또한 제공된 메소드는 Closing 이벤트를위한 것입니다. 하지만 응용 프로그램을 닫지 않아도. 아직도 내가 여러 번 시간을 최소화하고 다시 정상적인 상태로 수행하면 시스템 트레이에 많은 아이콘을 찾을 수 있습니다. 어떻게해야합니까? – Vikneshwar

+0

미안 해요. 오타를 만들었습니다. –

관련 문제