2017-10-16 65 views
1

我创建了我的托盘图标System.Windows.Forms.NotifyIconC#清除关闭应用程序的托盘图标

但是,应用程序关闭后。该图标继续留存,直到我手动将鼠标移到该图标上。

当新实例运行时,如何防止延迟或清除所有旧的?

+0

出现这种情况,如果你当应用程序被关闭,不处理你的任务栏图标。另一种情况是您的应用程序崩溃。但是在这种情况下,所有其他使用托盘图标的应用程序也会发生,无论它们是否使用C#,C++或任何其他可生成Windows应用程序的语言编写。 – Oliver

回答

5

我没有重现您的问题,我正在运行Windows 10创作者更新。

但是我发现,当您关闭应用程序时,您可以DisposeNotifyIconDispose可以将您的图标移出任务栏的托盘区域。

我想你可能已经意外退出了你的程序,那会导致你的问题。您应该检查是否调用了System.Exit()或其他不安全的退出方法。

你可以看到下面的代码就知道如何调用Dispose

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnClosed(EventArgs e) 
    { 
     base.OnClosed(e); 
     // Call Dispose to remove the icon out of notification area of Taskbar. 
     notifyIcon1.Dispose(); 
    } 
} 
+0

调试时,当我单击停止按钮时,应用程序终止而不调用任何回调。那是他们建立起来的时候。有什么办法可以阻止它呢? – John

+0

即使退出整个过程,Windows也不会处理显示或隐藏的notifyicon。 Windows API Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA lpdata)是控制它的唯一方法。 – walterlv

相关问题