Winforms系统托盘中的多个通知图标

Vik*_*war 6 .net c# notifyicon 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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

在表单加载我添加了此代码

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;
        }
Run Code Online (Sandbox Code Playgroud)

处置事件如下

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

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

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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我尝试清除通知图标,但即便如此也没有帮助我.我错过了一些非常明显的东西.任何帮助,将不胜感激.

Abh*_*nav 0

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